H. LILEN - J. BÉNARD
| PRATIQUE
Loziares
36 PROGRAMMES
3 2h:
LERL
IRE L n La:
S. E. C.F.
Ne
ÉDITIONS RADIO
RE
a —-
EE — — — —
—— —
\ k fl
\
MENU
— % \
+ _ _ — à e *
ee ——] ——_—_ —_ 6 ©
— —_ — | &
——_— —— ——_—_—_
—— —_—_—
———_ —_ —— € |
EE æ
— a
— ——_—_—_—_ —”
TS —
EE”
EE ——
EE —
EE
27.451168
RADIO
Le
(A
LL
n
Éditions Radio
H. LILEN - J. BÉNARD
PRATIQUE
l'ORIC1
36 PROGRAMMES
S. E. C.F.
en
Editions Radio
9, RUE JACOB - 75006 PARIS
EL. 329.63.70
ATTENTION !
Une erreur peut en cacher une autre...
Le message d’erreur signalé par votre micro-ordinateur
pour la ligne 250, par exemple, d’un programme
ne signifie pas forcément que cette ligne est mauvaise.
C’est peut-être la ligne 120 qu’il faut corriger, ou
tout simplement il y a incompatibilité entre vos
données et votre programme.
La loi du 11 mars 1957 n’autorisant, aux termes des alinéas 2 et 3 de l’article 41, d’une part, que les « copies
ou reproductions strictement réservées à l’usage privé du copiste et non destinées à une utilisation collec-
tive » et, d’autre part, que les analyses et les courtes citations dans un but d’exemple et d'illustration,
« toute représentation ou reproduction intégrale ou partielle, faite sans le consentement de l’auteur ou de
ses ayants droit ou ayants cause, est illicite » (alinéa 1° de l’article 40). Cette représentation ou reproduc-
tion, par quelque procédé que ce soit, constituerait donc une contrefaçon sanctionnée par les articles 425 et
suivants du Code pénal.
/ Imprimerie B -L H, N
© SEcF Éditions Rodio, Paris
1983
. Dépôt légal : décembre 1983
Tous droits de traduction, de reproduction Éditeur n° 932 - Imprimeur : 778229
et d'adaptation réservés pour tous pays L.S.B.N. 2 7091 0932 8
AVANT-PROPOS
Décidément, les Anglais nous surprendront toujours ! Ce sont eux qui, en effet,
ont inventé ces merveilleux petits micro-ordinateurs dont l’Oric est le type le plus
élaboré, peut-être, et qui connaissent un succès amplement mérité. Grâce à leur fai-
ble prix, ces machines ont révélé ce qu'était la micro-informatique à un très vaste
public. Des centaines de milliers de personnes, aujourd’hui, les emploient aussi bien
pour leurs applications professionnelles ou familiales que pour jouer ou apprendre.
Pourquoi pas vous ?
Telle est probablement ce à quoi vous songez si vous avez commencé à feuilleter
ce livre : il vous est destiné si vous êtes totalement profane en informatique, si vous
n'avez jamais manipulé un micro-ordinateur, si vous ignorez tout de la program-
mation et du Basic et si même, de surcroît, vous redoutez ces étranges petites machines
dont on dit qu'elles sont capables de suppléer l’homme dans ses fonctions
intellectuelles.
Nous allons vous prouver que vous pouvez mettre le micro-ordinateur à votre ser-
vice bien plus aisément que vous ne l’imaginez. Pour cela, nous allons vous proposer :
e De faire la connaissance de l’Oric-1, pour commencer : comment le brancher, le
mettre en service, comment aussi entamer le « dialogue » avec lui.
e Puis, nous vous montrerons aussitôt comment utiliser des cassettes de program-
mes (jeux, enseignement, gestion...) avec un banal magnétophone. Dès lors, et sans
même qu'il vous soit besoin d’aller plus avant, vous serez à même d’exploiter immé-
diatement ce micro-ordinateur (sans donc avoir à apprendre la programmation).
e Mais nous vous engageons vivement à vous initier à cet art, dans un premier but
de démystification. Vous constaterez que la programmation devient très vite l’un
des « jeux » les plus passionnants qui soit. Que les informaticiens professionnels
nous pardonnent pour ce mot de jeux ! Pour notre excuse, ajoutons que les ambi-
tions de ce livre sont plus modestes et qu’il n'entend pas, en quelques pages, faire
du lecteur un analyste-programmeur de métier. Nous allons toutefois très rapide-
ment vous mettre en demeure de concevoir vos propres programmes dans ce lan-
gage appelé le « Basic », qui est, aujourd’hui, le plus répandu.
Pour cela, laissez-vous simplement guider par les chapitres qui suivent. Toutes les
notions nouvelles vont vous être présentées à l’aide d’exemples concrets et d’exerci-
ces (donnés avec les résultats que vous devez obtenir), pour que vous les assimiliez
sans peine et sans effort inutile de mémoire. Laissez-vous aussi guider par votre fan-
laisie et votre imagination et n'hésitez pas à créer des variantes des programmes
que nous vous proposerons, ce que vous serez certainement tenté de faire. Les auteurs
ne peuvent que Vous y encourager.
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Une question importante se pose toutefois : vous faut-il obligatoirement disposer
d’un Oric pour aborder l’étude de ce livre ? Il est évident que c’est préférable car
alors, vous pourrez directement expérimenter sur machine et acquérir l’indispensa-
ble pratique de l’informatique. Mais ce n’est nullement une condition impérative
pour une première lecture rapide, celle qui doit vous permettre de vous tester vous-
même et de vous rassurer pleinement ; elle vous incitera très certainement à fran-
chir le pas et à investir dans l’achat d’une telle machine. Ce dont vous aurez tout
lieu de vous féliciter par la suite.
Les chapitres IV à VIII présentent chacun une partie du langage avec de nombreux
exemples brefs qui mettent l'accent sur ce qui est nouveau. À la fin de ces chapitres,
vous trouverez des programmes qui mettent en application ces nouveautés. Leur
but est de vous donner des idées ; amusez-vous à les essayer, puis modifiez-les.
Enfin, le dernier chapitre regroupe les programmes de récapitulations : c’est une
espèce de révision qui vous est proposée ! Selon votre tempérament, vous adopte-
rez sans doute l’une de ces deux démarches : commencer par lire les explications
et taper les exemples simples pour tous les chapitres, avant de passer aux program-
mes d’applications, ou bien tout lire d’une seule traite, en faisant quand même une
pause casse-croûte de temps en temps !
CHAPITRE I
POUR FAIRE CONNAISSANCE AVEC L’ORIC
Ce premier chapitre est destiné à vous présenter l’Oric. Plus généralement d'’ail-
leurs, on va vous exposer ce qu'est un micro-ordinateur personnel et de quoi se
compose un « système informatique ». On vous montrera aussi comment connec-
ter l’Oric et comment entamer (tout juste !) le dialogue avec lui.
Principaux thèmes étudiés
La micro-informatique recourt à un vocabulaire qui lui est propre. Souvent à base d’anglais, d’ailleurs.
Démrystifier l’informatique revient souvent à démystifier ce vocabulaire, pour commencer. Nous allons
nous y employer dans ce livre en vous présentant progressivement tous les termes qu’il importe de connaî-
tre.
Ne les apprenez pas par cœur : si vous hésitez sur la signification d’un mot, reportez-vous au paragraphe
qui le définit. Pour cela, nous avons placé, en marge du texte, les termes que nous appellerons des
« mots-clés ». Au début de chaque chapitre, nous vous en donnerons la liste dans l’ordre où ils apparais-
sent. En fin d’ouvrage, tous ces mots-clés sont regroupés par ordre alphabétique, avec l’indication de la
page où vous les trouverez cités.
Voici la liste des mots-clés pour ce premier chapitre ; ne vous laissez pas impressionner par une longueur
qui n’est qu’apparente !
Branchement de l’Oric-—1
Alimentation
Prise Péritel
Mise en service
QWERTY
AZERTY
Curseur
Effacement arrière
DEL
SYNTAX ERROR
Répétition des touches
SHIFT
Langages
BRANCHEMENT
DE L'ORIC - 1
Basic
Basic Microsoft
Chiffre zéro et lettre O
Microprocesseur
Mémoires internes
Mémoires centrales
Mémoires externes
Mémoires périphériques
Cellules mémoires
Octet
Caractère
Byte
Mémoires vives
1. L’Oric — 1 et ses branchements
RAM
Mémoires mortes
ROM
Volatilité des mémoires
Ligne physique
Ligne logique
CTRL
Minuscules
Majuscules
CTRL/T
CAPS
Format de l’écran
RETURN
Oui, le micro-ordinateur Oric— 1, c’est ce clavier que représente notre photo. Ce
bloc, mesurant environ 28 cm sur 18 cm, a la forme d’un pupitre de 2 cm d’épais-
seur sur l’avant et 5 sur l’arrière ; il contient tous les circuits électroniques qui font
un ordinateur.
Afin de le faire fonctionner, il faut l’alimenter en énergie électrique, d’une part, le
connecter à un récepteur de télévision pour obtenir des images, d’autre part.
8 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
COELCOCLCCT
VALLE RETURN
LELLE esse
SHIFT Et F4 SHIFT
nn.
==
Léon
Gros plan sur l’Oric— 1 : son clavier
Ce micro-ordinateur a besoin d’une tension continue de 9 volts ; celle-ci lui sera
fournie par un petit bloc d’alimentation qu’on connectera directement sur le sec-
teur (220 volts alternatifs) ; il en sort un câble terminé par un connecteur coaxial
femelle : insérez-le dans la prise mâle située à l’arrière-droit du micro-ordinateur.
La connexion à un téléviseur n’est guère plus complexe ; utilisez, de préférence, un
récepteur couleur si vous voulez bénéficier de toutes les facultés de votre machine.
PRISE Le branchement s’effectue via la prise « Péritel » (mot provenant de péri-télévi-
PERITEL sion), cette prise étant obligatoire en France sur tous les récepteurs, depuis 1981.
C’est une prise à deux rangées de connexions, femelles sur le téléviseur, de forme
allongée. Saisissez-vous du câble spécial qui vous est livré avec l’Oric et qui se ter-
mine par une fiche mâle correspondante ; enfichez celle-ci. L’autre extrémité de ce
câble se termine par une prise ronde, mâle, à 5 broches (dite « aux normes DIN »).
Insérez-la dans le connecteur femelle correspondant, situé à l’arrière gauche du
micro-ordinateur.
Votre micro-ordinateur va ainsi fournir les signaux d’image (rouge, vert et bleu) et
de synchronisation à votre téléviseur, mais celui-ci doit basculer en mode réception
vidéo. Pour cela, il faudra encore amener une tension de 12 volts à la fiche Péritel,
à l’aide d’un second bloc d’alimentation, plus petit et ajustable. Il s’agit d’un
« adaptateur », à connecter également au secteur 200 V (prévoyez une prise multi-
ple !) ; ajustez l’ergot, qui glisse latéralement sur 12 V (généralement, 6 V suffi-
sent ; vous n’avez rien à redouter si vous essayez diverses valeurs : votre téléviseur
ne craint rien car elles seront de toutes façons inférieures à 12 V. Si elles sont trop
faibles, toutefois, la commutation interne ne se fera pas et vous n’obtiendrez pas
d’image de l’Oric— 1). L’autre extrémité du câble de l’adaptateur se termine par
une prise en croix, dont l’intérêt est d’offrir quatre fiches de connexion. Choisissez
celle qui s’insère normalement sur la prise femelle située à l’arrière du connecteur
mâle Péritel : c’est la plus fine.
La prise mâle située à gauche, à l’arrière du micro-ordinateur, sert à attaquer la
fiche antenne d’un récepteur de télévision aux normes « PAL ». (Les normes fran-
çaises sont appelées SECAM). Ignorez-la donc, et ce d’autant plus allègrement que
le branchement Péritel fournit une image de bien meilleure qualité. A moins que
vous ne disposiez d’un récepteur de télévision « multistandard », acceptant le PAL
et ne possédant pas de prise Péritel, ou encore d’un récepteur SECAM sans prise
POUR FAIRE CONNAISSANCE AVEC L’ORIC 9
Attention : cette prise
ronde aussi sert
au magnétophone !
Prise mâle
Sortie pour l'attaque fire ;
d'alimentation
d'un téléviseur
Fiche DIN Ÿ
mêle
lgnorez cette
prise mâle
Bloc :
d’alimentation
Pour ajuster la
tension 12 V
Adaptateur
Vous pourriez même ignorer
l'adaptateur secteur et connecter
ici une pile 9 V
A enficher sur la
fiche Péritel femelle
du téléviseur
Comment brancher l’Oric — 1 pour le mettre en service.
Péritel : dans ce cas, il vous faudra un boîtier de conversion en plus, ce que votre
vendeur sera certainement très heureux de vous fournir (consultez-le).
Cela étant fait, vous voici enfin prêt à faire naître l’image.
2. Mise en service
Notez, tout d’abord, que l’Oric — 1 ne possède pas d’interrupteur de mise en ser-
vice : vous débrancherez simplement ses blocs d’alimentation et adaptateur pour le
MISE EN déconnecter.
SERVICE Mettez donc le téléviseur en marche, sur n’importe quelle station (625 lignes), peu
importe : la commutation Péritel a priorité. Si, à ce moment, vous alimentez
l’Oric— 1, vous allez voir apparaître sur l’écran une image quelconque pendant un
court instant, puis le message suivant en noir sur fond blanc :
10 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Ce cadre est censé
représenter la partie claire de
votre écran de
télévision, telle qu’elle
est proposée par l‘Oric - 1
ORIC EXTENDED BASIC V1.9
c 1983 TANGERINE
Traduction :
«Basic étendu de l’Oric,
version 1. 0. Copyright
1983 Tangerine» __/
47870 BYTES FREE
lci, ce petit pavé
clignote. On l'appelle
un «curseur»
«47870 octets
disponibles»
{Nous ne savons pas comment
vous représenter le clignotement
sur le papier)
Si vous n’obtenez pas ce message au bout de
quelques secondes, c’est peut-être que vous
n’avez pas respecté l’ordre de mise en
marche : le téléviseur, puis l’alimentation
Péritel et enfin l’Oric. Il suffit alors de
débrancher l’ordinateur un instant et de le
rebrancher.
Qu'est-ce que tout cela peut-il bien signifier ? Et bien, tout d’abord, le « langage »
employé par l’Oric se présente poliment : « Je suis la version 1.0 du Basic étendu de
l’Oric ». Puis, le micro-ordinateur vous annonce de quelle « capacité mémoire »
vous disposez. Enfin, il s’affirme prêt à vous servir. Si le message que vous lisez est
différent, ne vous en inquiétez pas : on va voir ce que tout cela signifie.
Réglez donc le contraste et la luminosité du téléviseur afin d’obtenir une image
agréable à regarder, puis examinez le clavier. Il comporte cinq rangées de touches
marquées de divers symboles.
Considérez d’abord la rangée supérieure des touches a/phabétiques. De gauche à
droite, elle commence par les lettres Q, W, E, R, T, Y, etc. ; si, maintenant, vous
comparez cette distribution à celle d’une machine à écrire courante, vous verrez
qu’à cet emplacement, la machine à écrire dispose des touches À, Z, E,R, T, Y,
etc.
La distribution appelée AZERTY correspond
aux normes françaises, la distribution
QWERTY, aux normes anglaises ou
américaines.
QWERTY
AZERTY
le B …
EFFACEMENT
ARRIERE
Vous venez de frappez
POUR FAIRE CONNAISSANCE AVEC L’'ORIC 11
En fait, les différences sont minimes mais capables de gêner une dactylo experte (ou
un expert du clavier). Si vous êtes aussi peu adroit au clavier que l’auteur, vous
n’aurez aucun mal à vous faire au QWERTY. Afin de vous exercer, frappez donc le
mot BONJOUR (qui n’a, ici, rigoureusement rien à voir avec l’informatique pure)
en examinant ce qui se passe sur l’écran. Tout d’abord, le B se place sur la ligne
marquée par le curseur, en 3° position, puis le curseur passe aussitôt à la position
suivante :
Ces tirets indiquent
qu’on ne vous montre
qu'un «extrait» de l‘écran
…… Et le curseur
Frappez donc BONJOUR au complet, ce qui donne :
Remarquez qu’à chaque frappe, le curseur se
déplace d’un cran vers la droite : il marque
l’emplacement où apparaitra le caractère
suivant.
Si vous vous trompez en frappant un caractère, appuyez sur la touche marquée
DEL (à droite du clavier) ; elle ramène le curseur d’un pas en arrière et ce curseur
efface le caractère qu’il recouvre. Vous pouvez dès lors en frapper un nouveau.
DEL est une touche d’espacement arrière
avec effacement.
Comme sur toutes les machines à écrire, le clavier de l’Oric dispose d’une barre
d’espacement ; c’est la longue barre horizontale du bas. Elle sert à créer des
« blancs », des espaces. Expérimentez-là.
Ne vous privez pas de frapper sur le clavier,
même en mélangeant ou combinant des
touches. Votre Oric ne craint rien (si vous
frappez avec une force « raisonnable ») ;
vous ne provoquerez pas de panne !
Cependant, il réagira parfois et affichera des messages bizarres, du genre :
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
SYNTAX ERROR
REPETITION
DES TOUCHES
SHIFT
LANGAGES
BASIC
Traduction :
«Erreur de
De Un Syntaxe) pl
?SYNTAX ERROR
Ready
NE Prêt» )- 2 2 2
C’est tout simplement parce que l’ordinateur n’a pas compris où vous vouliez en
venir. Forcément, vous ne respectez pas ses commandes normales (qu’on va vous
enseigner plus loin).
À nouveau, ces messages ne nuisent en aucun
cas à l’Oric et vous ne pouvez le mettre en
panne ainsi.
Remarquez que, si vous maintenez une touche enfoncée, son caractère va apparaî-
tre une fois mais, après un court instant, il va se répéter en permanence : les tou-
ches sont à répétition.
Vous avez aussi remarqué que certaines touches sont marquées d’un double
symbole, par exemple un chiffre tel que le 1 et, à côté, un point d’exclamation. Si
vous frappez sur cette touche (le 1 : en haut et à gauche), vous obtenez un 1 sur
lécran. Mais comme sur une machine à écrire, vous pouvez obtenir le second
caractère en « basculant » la frappe. Pour cela, repérez les deux touches marquées
SHIFT, de part et d’autre du clavier ; utilisez l’une ou l’autre, selon votre confort :
e Frappez sur SHIFT ef maintenez-la enfoncée.
e Puis, frappez sur le 1.
e Relâchez le tout.
Vous écrivez ainsi un point d’exclamation (!).
On peut traduire SHIFT par « basculer ».
L'action conjointe sur SHIFT et sur une
autre touche, le 1 ici, sera écrite par la suite
SHIFT/1.
Mais vous en savez assez sur cette mise en route, pour ce premier chapitre. Sachez
que nous reviendrons sur le clavier afin de vous en détailler toutes les possibilités.
3. Qu'est-ce que le Basic ?
Un ordinateur se distingue des autres types de machines par le fait qu’on peut lui
déléguer des fonctions « intellectuelles ». il sait faire énormément de choses si on
les lui « explique » correctement : poser une fusée sur la lune, établir une facture,
jouer aux échecs ou vous apprendre les mathématiques... Pour cela, vous devez lui
fournir des instructions précises développant ce qu’il doit faire dans un langage
qu’il soit capable de comprendre.
De nombreux « langages » ont été créés, mais le plus répandu en micro-
informatique est celui qu’on appelle le Basic, qu’on va étudier dans ce livre. Il
dérive non pas du français courant (hélas !), mais de l’anglais, car toute l’informa-
tique nous vient d’outre-Atlantique. Rassurez-vous : même si vous n’êtes pas porté
sur les langues étrangères, le nombre de mots à acquérir est tellement faible que
vous ne vous apercevrez même pas que vous vous exprimez en anglais. Plus que de
mots, d’ailleurs, il s’agira de codes dont l’apprentissage ne demande pas d’effort.
BASIC
MICROSOFT
CHIFFRE 0
ET LETTRE O
MICROPROCESSEUR
MEMOIRES
INTERNES,
CENTRALES
POUR FAIRE CONNAISSANCE AVEC L’ORIC 13
Le langage Basic a été développé aux Etats-Unis au cours des années 60. Ce mot est
formé par les premières lettres de l’expression « Beginners All-purpose Symbolic
Instruction Code », soit, à peu près : code d'instructions symboliques tous usages
pour débutants.
Depuis son invention, le Basic a cependant
fait souche et s’est multiplié. Aujourd’hui,
il existe en de très nombreuses variantes.
Pensez au français, tel qu’il est parlé en France, et au français de Montréal
(Canada), par exemple : le noyau de la langue est le même mais ici et là se manifes-
tent des différences sensibles. Il en va de même du Basic, qui existe en plusieurs dia-
lectes pourrait-on dire. Le plus répandu des Basics est cependant celui qui a été mis
au point par la société américaine Microsoft ; c’est celui qu’Oric a adopté. C’est un
Basic très complet, étendu comme l’on dit, dont la version employée par l’auteur
est la 1.9, ainsi que l’indiquait l’écran.
En passant, notez l’écriture « 1.9 » qui se
lit « un point zéro ».
En informatique, on écrira souvent le zéro
avec une barre au travers pour le différencier
de la lettre O. En effet, pour l'ordinateur,
zéro et O sont deux choses totalement
différentes. Vérifiez-le en les frappant
au clavier. Et ne les confondez pas à l’avenir.
Vous pourrez peut-être disposer d’une version différente du Basic sur votre propre
machine, mais peu importe pour ce qui suit. Mais où ce « langage » se trouve-t-il
dans l'ordinateur ?
4. Microprocesseur et mémoires
Ce qui suit, ici, n’est pas absolument indispensable pour utiliser votre micro-
ordinateur. Il s’agit d’un petit peu de technique. Mais pourquoi ne pas le lire ?
Vous vous ferez, ainsi, des idées plus précises sur les caractéristiques de la machine.
Sachez, tout d’abord, que l’âme de tout micro-ordinateur est un minuscule circuit
électronique qui tient dans le creux de la main et s’appelle un « microprocesseur ».
Celui qui équipe l’Oric — 1 porte le nom (peu harmonieux) de « 6502 ». C’est lui
qui exécute tous vos ordres.
Cependant, il ne peut fonctionner que pour autant qu’il dispose de circuits lui ser-
vant de mémoires. Dans ces mémoires seront rangés les programmes, les données,
les chiffres à additionner ou à soustraire, par exemple, et les résultats. Il s’agit, là
encore, de minuscules circuits électroniques capables de répondre instantanément
aux sollicitations du microprocesseur.
On les appelle des « mémoires internes »
(à l’ordinateur), ou encore des « mémoires
centrales ».
En effet, il existe aussi des mémoires
« externes », dites aussi « périphériques »,
telles que les cassettes magnétiques.
MEMOIRES
EXTERNES,
PERIPHERIQUES
CELLULES
MEMOIRES
OCTET
CARACTERE
BYTE
MEMOIRES
MORTES
VOLATILITE
DES MEMOIRES
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Vous pouvez acquérir des programmes tout faits sur bande magnétique mais, pour
pouvoir les exécuter, il vous faudra obligatoirement les transférer au préalable en
« mémoire centrale » car ce n’est qu’à partir de celles-ci qu’ils pourront « tour-
ner » (terme du jargon informatique signifiant « marcher »).
Ces mémoires internes sont organisées en cellules ; chaque cellule est capable de
mémoriser un caractère tel que ceux que vous frappez au clavier. Si vous vouliez
écrire une lettre de 25 lignes de 60 caractères, par exemple, et la mettre en mémoire,
il vous faudrait disposer de 25 fois 60 = 1 500 cellules en mémoire.
La frappe d’un caractère se traduit, en effet, par l’émission d’une série de 8 impul-
sions électriques, ce qu’on appelle un octet. Or, une cellule est précisément capable
de mémoriser 8 impulsions électriques, donc un octet. Notez qu’octet se dit
« byte », en américain. Un total de 1 024 octets (et non 1 000 : ainsi le veut l’infor-
matique !) s’appelle un kilo-octet, ou K octet (et en anglais « kilobyte »).
Rappelez-vous qu’en pratique, « octet »
(ou « byte ») et « caractère » sont équivalents.
Le premier écran que vous fournit l’Oric — 1 vous précise de combien d’octets vous
disposez, selon la version que vous avez acquise : 16 K ou 48 K. Ainsi, la version
48 K de l’auteur indiquait la disponibilité de 47 870 octets en affichant « 47 870
BYTES FREE », où FREE signifie libre. Cela fait un peu moins que 48 K exacte-
ment, car 48 K = 48 x 1 024 =49 152 octets ; la différence est, en effet, utilisée par
l’Oric — 1 lui-même pour ses diverses tâches internes.
Si vous deviez introduire en mémoire des programmes un peu longs, il vous fau-
drait vérifier qu’ils y trouveront suffisamment de place. Ainsi, n’employez pas une
cassette de programme marquée 48 K avec un Oric — 1 de 16 K seulement. Par con-
tre, l’inverse ne pose aucun problème : vous pourrez utiliser un programme de 16 K
avec une mémoire centrale de 48 qui sera, alors, surabondante.
Il nous faut cependant encore vous donner une précision à propos des mémoires
centrales. Sachez qu’on les classe en deux grandes catégories :
e Les mémoires vives dans lesquelles vous pouvez enregistrer des informations à
volonté, et les lire, bien entendu. Elles sont affublées du sigle RAM (prononcez
« rame »). C’est d’elles que nous avons traité ci-dessus, sans vous l’avoir précisé.
e Les mémoires mortes : vous ne pouvez plus rien y enregistrer car le fabricant l’a
fait une fois pour toutes, et c’est définitif. Ces mémoires dites mortes, appelées
aussi ROM (prononcez « rome »), contiennent des données qu’on ne peut modi-
fier ; comme les pages imprimées d’un livre, on ne peut que les lire. Dans l’Oric-—1,
elles stockent le langage Basic.
C’est bien pratique que les ROM soient indélébiles. Car les RAM, elles, ne conser-
vent leur contenu que pour autant que l'ordinateur reste sous tension. Dès que vous
le débranchez, ne serait-ce qu’une fraction d’instant, elles perdent les informations
qu’elles stockaient.
Les mémoires vives sont affligées de ce
dernier défaut, qu’on appelle la « volatilité ».
Vous devinez, maintenant, pourquoi on emploie des mémoires externes, encore
appelées mémoires périphériques, telles que des cassettes de bande magnétique ?
Les informations rangées sur bande magnétique peuvent être lues et relues à tout
moment : elles ne sont pas ”’volatiles’””, elles. Lorsque vous remettrez votre micro-
ordinateur sous tension, ses mémoires vives centrales ne contiendront plus rien ;
vous pourrez alors les recharger avec le programme se trouvant sur support magné-
tique. Nous allons vous montrer comment dans le chapitre suivant.
POUR FAIRE CONNAISSANCE AVEC L’ORIC 15
5. Clavier et écran
Revenons un moment sur le clavier et l’affichage. Votre Oric — 1 est-il en service et
le téléviseur aussi ? Fort bien. Frappez donc l’alphabet, puis les chiffres de 9 à 9
(oui, nous allons barrer systématiquement le zéro), puis à nouveau l’alphabet : cela
vous obligera à repérer l’emplacement des touches mais va aussi permettre de
compter combien de caractères peuvent être inscrits sur une ligne :
Les caractères se placent à
partir de la 3e position
ABCDEFGHI JKLMNOPQRSTUVWXYZ9123456789AB
Après la frappe du
38e caractère, le
curseur revient automati-
quement à la ligne …
… Maïs il se place, lui, en
ère position
La conclusion est évidente : une ligne d’écran contient 49 ’’colonnes’” mais le texte
n’en utilise que 38. Vous pouvez continuer à frapper la même séquence, par exem-
ple : attention, l’Oric — 1 retournera à la ligne mais n’acceptera que 78 caractères
répartis sur 3 lignes.
Dès le second retour à la ligne (76 caractères),
sa sonnette vous prévient qu’il arrive au
bout de ses possibilités d’accueil. Encore
deux caractères, deux coups de sonnette,
et ce sera tout !
Si vous vous entêtez et frappez un 79° caractère, il l’affichera maïs le fera immédia-
tement suivre d’une barre oblique inversée signifiant qu’il annule la ligne, n’en tient
pas compte :
LMNOPQRSTUVWXY
NOPQRSTUVWXYZ9
Le curseur revient
ici
mo
ES
NN
De
+
Barre d'annulation : il y a
trop de caractères
Ceci nous permet de définir :
e Une ligne physique de 38 caractères sur l’écran.
LIGNE PHYSIQUE e Une ligne logique qui va, elle, jusqu’à 78 caractères répartis sur trois lignes.
Remarquez, maintenant, les quatre touches encadrant la barre d’espacement et
LIGNE LOGIQUE marquées de flèches — Ÿ Î et — et frappez-les : elles emmènent le curseur dans le
sens indiqué. Notez que +-, contrairement à DEL, ne provoque pas l’effacement du
caractère sur lequel le curseur passe ; vérifiez-le en emmenant le curseur sur du
texte déjà frappé.
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
CTRL
MINUSCULES
MAJUSCULES
FORMAT DE L'ECRAN
Voici le haut de l’écran
Expérimentez aussi les touches marquées de symboles ; en frappe directe, vous
obtenez le symbole du bas ; avec SHIFT (maintenez SHIFT enfoncée et frappez la
même touche), vous obtenez le symbole du haut.
Mais peut-être voudriez-vous écrire en minuscules et non plus en majuscules ? Qu’à
cela ne tienne, mais pour cela, il faut employer la touche CTRL (à gauche du cla-
vier), qui signifie contrôle (ou plus exactement, commande). Elle s’utilise comme
SHIFT : frappez-la et maintenez-la enfoncée, puis frappez sur une autre touche, et
relâchez le tout.
Pour passer aux minuscules, frappez CTRL
et le T, ce que nous indiquerons par
CTRL/T. Dès lors, tous les caractères
alphabétiques vont s’inscrire en minuscules.
Désormais, votre clavier est semblable à celui d’une machine à écrire : toutes les
frappes de touches alphabétiques donnent des minuscules. Si vous voulez passer
aux majuscules, il faut frapper à la fois SHIFT et la lettre voulue. Les caractères
autres que les lettres ne sont pas affectées.
Si vous voulez revenir au clavier « tout majuscules », il faut refrapper la même
combinaison : CTRL/T.
Pour revenir aux majuscules, refrappez
CTRL/T. Dès lors, tous les caractères
alphabétiques viendront en majuscules. En
plus, le haut de l’écran vous indiquera
« CAPS ».
Les lettres CAPS viennent pour « capitales », mot d’imprimerie signifiant majus-
cules. Cela donnera :
CAPS vient ici, en blanc
sur fond noir
Dans l‘écran utile, le texte s'écrit
en noir sur fond blanc
Le choix entre majuscules et minuscules dépend pour beaucoup de votre goût per-
sonnel. Mais toutes ces frappes n’ont-elles pas déjà bien rempli l’écran ? Si tel n’est
pas encore le cas, continuez : vous constaterez que l’écran étant plein, une nouvelle
ligne apparaissant en bas « chassera » la ligne du sommet qui disparaîtra, toutes les
autres remontant d’un cran. Comptez alors les lignes disponibles (y compris celles
qui ont pu être sautées) : il y en a exactement 27 sur l’écran « principal », plus la
28° qui vous indique « CAPS ».
Le format de l’écran, en mode dit « texte »,
est ainsi de 28 lignes sur 40 colonnes.
La ligne supérieure, au-dessus du cadre principal, servira surtout pour l’affichage
de messages divers.
POUR FAIRE CONNAISSANCE AVEC L'ORIC 17
RETURN
Nous vous parlerons ultérieurement de la touche ESC et de toutes les combinaisons
possibles de CTRL, car nous en terminerons ici avec la touche la plus importante
peut-être, celle marquée RETURN, soit retour. Elle correspond au retour à la ligne
des machines à écrire mais surtout, c’est elle qui vous servira à dire à l’ordinateur
« Je viens de terminer un ordre ; prends-le en compte maintenant ! ». Pour cela,
vous frapperez sur RETURN ; tant que vous ne l’aurez pas fait, l’Oric — 1 ne saura
pas qu’il doit passer à exécution. Vous en apprécierez très vite l'usage. Si, en expé-
rimentant le clavier, vous avez frappé sur RETURN, il est fort probable que le
Basic de l’'Orie — 1 n’aura rien compris à ce que vous avez voulu faire et vous aura
retourné ce fameux message « ?SYNTAX ERROR » qui signifie à peu près « Si
vous voulez me commander, apprenez d'abord à le faire correctement ! »
QUESTIONS SUR LE CHAPITRE I
Vous pensiez en avoir terminé avec ce chapitre ? Que non : nous ne vous ferons
grâce de rien, pas même de questions de cours ! En voici quelques-unes, qui évo-
quent des notions essentielles traitées dans ce chapitre. Vous en trouverez d'ailleurs
à la fin de tous les chapitres de ce livre.
Dans tous les cas, ces questions resteront très simples et, pour y répondre, il vous
suffira de cocher la case correspondante. Si vous marquez un doute, n "hésitez pas à
relire le passage correspondant dans le chapitre. En voici donc une première série :
cochez la case en face de la bonne réponse :
. Le curseur sert à :
{|} Exécuter des dessins sur l’écran
{} Marquer l'emplacement de la prochaine frappe
Efface
| Efface
. La touche DEL :
[]
{
le caractère précédent
le caractère suivant
. Pour utiliser la touche SHIFT, vous devez :
[
|
}
|
]
La frapper, la relâcher, puis frapper sur une autre touche
La maintenir enfoncée en frappant sur une autre touche
. Dire d’une mémoire qu’elle est volatile signifie :
|] Qu'elle est comparable à un animal de basse-cour (en quoi ?...)
|} Qu'elle perd ses informations si on débranche l’ordinateur
5. Le format de l’écran, en mode texte, est de :
28 lignes maximum sur 40 colonnes
64 lignes sur 80 colonnes
Avez-vous bien répondu à tout ? Ce n'était pas bien difficile, avouez-le !
Vérifiez cependant vos réponses.
Réponses page 18
18 PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES
REPONSES AUX QUESTIONS SUR LE CHAPITRE 1
}l. Le curseur sert à marquer l’emplacement de la prochaine frappe.
2. La touche DEL efface le caractère précédent. Le curseur fait alors marche
arrière.
3. Pour utiliser SHIFT, il faut maintenir cette touche enfoncée, puis en frapper une
autre.
4. Une mémoire est dite volatile lorsqu’une coupure de l’alimentation lui fait per-
dre... la mémoire. Il n’y a là rien à voir avec des volatiles de basse-cour. La
preuve ? Volatil s’écrit sans e au masculin (pour l’adjectif qualificatif).
5. Le format de l’écran, pour l’Oric — 1, est de 28 lignes sur 40 colonnes.
Combien d'erreurs avez-vous commises ? Zéro ? Tous nos compliments. Une ou
deux : bien, bien, bien. Trois ou quatre : pourquoi ne pas relire ce chapitre ?
Cing : mais au fait, l’avez-vous bien lu une première fois ?
CHAPITRE II
MAGNÉTOPHONE
ET CASSETTES DE PROGRAMMES
Disposez-vous de cassettes pré-enregistrées pour l’Oric ? Des jeux (« Les envahis-
seurs »..) ou des programmes d'enseignement (« Maths »..) ? Vous êtes immé-
diatement en mesure de les employer car pour cela, vous n'avez pas besoin d'en
savoir davantage sur le fonctionnement de l’ordinateur. Vous allez, ainsi, pouvoir
vous perfectionner en mathématiques, ou vous battre contre des soucoupes volan-
tes.
C'est non seulement le « chargement » d’un programme qu'on va aborder ici, mais
aussi la « sauvegarde », c’est-à-dire le transfert sur bande magnétique (non « vola-
tile ») d’un programme que vous avez créé, par exemple.
Le mode d'emploi de ce chapitre est ainsi le suivant : lisez immédiatement sa pre-
mière partie mais, parce qu’on n’a pas encore étudié la programmation, sautez la
seconde. Vous y reviendrez par la suite, dès que le besoin s’en fera sentir, c'est-à-
dire dès que vous aurez des programmes à « sauvegarder ».
Principaux thèmes étudiés
Connexion d’un magnétophone Démarrage à chaud
Chargement
CLOAD
Vitesse lente
,S
d’un programme Démarrage à froid
Sauvegarde d’un programme
CSAVE
Démarrage automatique
Ré-initialisation CSAVE AUTO
RESET
CONNEXION D'UN
MAGNETOPHONE
1. Le magnétophone
Votre Oric utilise des cassettes tout à fait standards, telles que celles sur lesquelles
vous enregistrez de la musique. Tout au plus conseillera-t-on alors d’utiliser des
bandes de bonne qualité.
Le magnétophone sera votre magnétophone habituel. Les appareils très bon mar-
ché donnent d’excellents résultats. Il vous faut cependant connecter le magnéto-
phone à l’Oric et pour cela, nous vous conseillons d'employer le câble que vous
fournit le fabricant. C’est un câble terminé à ses deux extrémités par des fiches ron-
des (aux normes « DIN »), à trois broches mâles. Insérez l’une de ces fiches dans la
prise femelle à 7 broches, elle, située à l’arrière de l’Oric, la seconde dans la prise
femelle correspondante de votre magnétophone, qu’elle soit à 3 ou 5 broches, peu
importe.
20
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Ici, vous aviez
branché
l'alimentation
Ici vous
aviez branché
le téléviseur
Fiches «DIN»
à 3 broches
Votre
magnétophone
L’Oric, vu de derrière, afin de vous montrer où connecter le magnétophone.
Méfiez-vous des cordons qu’on trouve dans le commerce, avec cinq broches au lieu
de trois ; dans ce cas, en effet, des broches sont souvent court-circuitées et vous
éprouverez des surprises les plus diverses (l’auteur en a fait l’expérience et a perdu
le son...).
Par contre, si votre magnétophone est muni d’une entrée de commande à distance
(mise en marche et arrêt du moteur), n’hésitez pas à employer un connecteur 7 bro-
ches, branché comme la notice de l’Oric le décrit. Vous vous épargnerez ainsi la
peine de mettre le magnétophone en marche puis de l’arrêter, votre ordinateur s’en
chargeant pour vous. Dans ce qui suit, nous allons supposer que vous ne disposez
pas de télécommande et nous allons vous imposer cette « corvée » en plus.
Sur le magnétophone lui-même, vous n’aurez qu’à ajuster le volume sonore, qui ne
nous a pas paru critique du tout. L’auteur a obtenu d’excellents résultats en prome-
nant le bouton de volume sonore pratiquement sur tous les réglages possibles.
Réglez-vous cependant, par souci de sécurité, vers le milieu de la gamme ou un peu
au-delà ; nous sommes restés sur le réglage 6 pour un bouton gradué de 9 à 19.
Un conseil : les têtes de lecture-écriture de
votre magnétophone doivent être propres :
nettoyez-les de temps à autre.
2. Le chargement d’un programme
On vous a déjà dit que les mémoires internes (vives) des ordinateurs étaient *’volati-
les”. Lorsque vous mettrez votre Oric en service, ses mémoires vives ne contien-
dront rien. Par contre, vous disposez peut-être d'une cassette pré-enregistrée.
MAGNETOPHONE ET CASSETTES DE PROGRAMMES 21
Si votre Oric est une version 16 K, il
faudra utiliser une cassette contenant un
programme ne dépassant pas 16 K. Vérifiez
sur votre cassette si elle est destinée à une
version 16 K (ou 48 K) : c’est généralement
indiqué très lisiblement.
Une fois sélectionnée la cassette voulue, on va transférer en mémoire centrale le
programme qu’elle contient.
Cette opération s’appelle le chargement.
CHARGEMENT Vous l’exécuterez chaque fois que vous
D'UN PROGRAMME voudrez employer un autre programme
à partir d’une mémoire périphérique (d’une
cassette, dans notre cas).
Placez la cassette dans le magnétophone. Très souvent et par sécurité, une cassette
est enregistrée sur ses deux faces avec le même prograrnme ; vous pourrez donc
employer indifféremment n’importe laquelle. Rembobinez la cassette, puis respec-
tez les instructions suivantes :
1 — Frappez au clavier le mot CLOAD. Il provient de l’anglais LOAD, pour char-
gement, précédé par un € signifiant cassette.
CLOAD 2 — Si votre cassette ne contient qu’un seul et unique programme, frappez ensuite
deux fois des guillemets après CLOAD (vous pouvez laisser un espace entre
CLOAD et la première paire de guillemets).
Vous obtiendrez les guillemets avec la
touche SHIFT.
En réalité, l’ordre CLOAD complet demande qu’on précise le nom du programme,
écrit entre guillemets. Celui-ci est inscrit sur la cassette. Si vous n’indiquez pas de
nom, l’Oric va charger le premier programme qu’il rencontrera. S’il n’y en a qu’un,
c’est forcément le bon.
Vous pouvez, cependant, indiquer le nom ; deux cas se présentent ici :
e La bande comporte plusieurs programmes. En indiquant le nom de celui que
vous voulez charger, l’Oric le recherchera et ne chargera que celui-ci.
e Elle ne contient qu'un seul programme : ce sera une vérification.
Attention : si vous frappez le nom,
respectez scrupuleusement son orthographe
et même les espaces.
La moindre erreur serait interprétée par l’Oric comme un autre nom, et l’ordina-
teur ne retrouverait pas le programme voulu.
3 — Maintenant, vérifiez sur la cassette si ce nom n’est pas suivi par une virgule,
puis par la lettre S. Ce sera très généralement le cas. Frappez alors une virgule puis
un S majuscule.
22 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
L’Oric dispose de deux vitesses pour
enregistrer et lire des cassettes, une rapide
et une lente. La lente fournit des résultats
bien plus fiables, d’où son emploi.
« Lente » se dit « slow », en anglais,
d’où le S.
Si vous ne frappiez ni la virgule, ni le S, l’Oric passerait la grande vitesse. et bien
sûr, n’aurait plus le temps de lire une bande enregistrée en basse vitesse.
En supposant que vous veniez de mettre votre ordinateur en service, l’écran devrait
afficher :
Ça, c'est pour un 48 K.
Pour un 16 K, ce sera moins
ORIC EXTENDED BASIC V1.9
C 1983 TANGERINE
47879 BYTES FREE
Ready
CLOAD "",
Vous venez de
L Le curseur est
frapper ceci ici
ICI
Notez que nous n’utilisons pas de nom de programme, dans les guillemets, pour
une autre raison « nécessaire et suffisante » : nous ignorons lequel vous allez
employer.
4 — Maintenant, frappez sur la touche marquée RETURN.
C’est la touche RETURN qui indique au
Basic qu’il doit acquérir l’ordre frappé,
puis l’exécuter. Sans RETURN, rien ne
se passera.
Aussitôt, l'ordinateur part à la recherche du programme, ce qu’il a l’obligeance de
vous indiquer sur sa 28° ligne (celle du haut) :
«Je cherche …» : c'est écrit en
SR nee blanc sur fond noir
5 — Mais il ne peut rien trouver, car vous n’avez pas encore mis le magnétophone
en marche, en mode « lecture ». Faites-le donc.
Dès lors, le Basic « lit » la bande ; dès que le programme est trouvé, le message
change et devient :
«J'ai trouvé le programme et je suis en train
RER ERA EE de le charger...» Es
MAGNETOPHONE ET CASSETTES DE PROGRAMMES 23
Si vous avez donné le nom du programme, ce même message est suivi de ce nom,
par exemple *’ DEMONSTRATION” :
Armez-vous de patience : pour un programme destiné à une mémoire de 48 K et en
mode lent (S), il faudra cinq bonnes minutes. A l’issue du chargement :
e le programme démarrera automatiquement. Le plus souvent alors, c’est lui qui
vous indiquera ce que vous devrez faire. Par exemple et pour lutter contre des sou-
coupes volantes, il vous dira que vous devez frapper sur la barre d’espacement pour
envoyer le faisceau laser contre les envahisseurs.
e sinon, l’Oric vous indiquera que le chargement est terminé en affichant son mes-
sage habituel READY, ce qui donnera (si l’on ne retient qu’une fraction de
l’écran) :
Ça, c'est ce qui figurait déjà) __ —
sur l‘écran..
. Voici maintenant le
nouveau «Je suis prêt !»,
après chargement
6 — Dans tous les cas, stoppez alors le magnétophone.
7 — Si le programme chargé ne démarre pas automatiquement, frappez les trois
lettres RUN, ce qui signifie ‘’En marche’”’, en anglais, puis frappez la touche
RETURN et il sera ’’lancé”’.
En cas d’erreur, n’hésitez pas à recommencer
toutes ces opérations.
Si vous frappez mal l’ordre, vous obtiendrez peut-être le message ?SYNTAX
ERROR. Recommencez alors. Ou bien vous constaterez que toute la bande a été
lue et que le message sur la ligne supérieure est toujours ?’SEARCHING...”” (je
cherche...) ; demandez-vous alors si vous n’avez pas omis de connecter le magnéto-
phone au micro-ordinateur.
L'ordinateur est têtu : après un ordre de
chargement, il cherche un programme et le
veut ! Tant qu’il ne l’aura pas trouvé, il
continuera à chercher sans accepter d’autres
ordres.
Le clavier est alors ”’inerte”’, ne répond plus à vos frappes. Pour pouvoir recom-
mencer et passer de nouveaux ordres, débranchez un instant l’ordinateur, puis
RE-INITIALISATION remettez-le sous tension, ce qui va le réinitialiser, comme l’on dit : vous retrouve-
rez le premier écran.
Il existe toutefois une méthode plus élégante pour ré-initialiser l’ordinateur, mais
elle n’est pas plus pratique, vous allez en juger : retourner complètement l’Oric,
sens dessus-dessous. A l’extrémité droite du boîtier se trouve une petite ”’fenêtre’”
rectangulaire en face de laquelle a été placé un bouton-poussoir (qu’on ne distingue
pas). Introduisez un crayon dans cette fenêtre et poussez le bouton.
24
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Senna roman ann
Voici la
fenétre
sous
laquelle se
trouve le
poussoir
+
al
ê
po
A SERVICE AETURS TO. OMC Pi LTD PO BOX 492 CAMEMOOS CB4 14
Pour ré-initialiser la machine, vous pouvez agir sur le poussoir accessible par le dessous de l’Oric.
Aussitôt, l’écran s’efface et vous obtenez :
Dès lors, vous pouvez recommencer.
Cette action s’appelle le RESET (remise
RESET à zéro). Le RESET ne fait pas perdre à la
mémoire centrale ce qu’elle pouvait déjà
contenir, contrairement à une interruption
de l’alimentation.
Servez-vous du RESET chaque fois que vous perdez le contrôle de l’ordinateur
Cela vous sera très utile, surtout lorsque vous programmerez.
Le RESET est encore appelé un « démarrage
à chaud ». Le « démarrage à froid » est
celui qu’on provoque en remettant l’Oric
sous tension.
DEMARRAGE
A CHAUD, A FROID
Nous supposons maintenant que votre programme « tourne » et que vous êtes en
train d’essayer de poser votre super-avion 787 sur la piste d’atterrissage. L’auteur
souhaite que vous réussissiez mieux que lui : il a « crashé » l’avion, ce qui lui a valu
en cours de manœuvre le message « Attention, cet avion est encore sous
garantie ! ».
MAGNETOPHONE ET CASSETTES DE PROGRAMMES 25
3. Sauvegarde d’un programme
Nous allons vous montrer, maintenant, comment transférer sur bande magnétique
un programme se trouvant en mémoire centrale. Ce sera soit un programme que
vous venez de créer, soit tout autre programme que vous avez précédemment
chargé en mémoire centrale à partir d’une cassette et dont vous voulez faire une
copie sur une autre cassette.
Si vous ne faites qu’aborder ce livre, vous n’avez pas encore commencé à program-
mer ; dans ce cas, nous vous conseillons de sauter ce qui suit. En effet, nous allons
faire appel à quelques notions qui ne seront étudiées que dans les chapitres ulté-
rieurs (par exemple, les ordres PRINT, LIST...). Dès que vous aurez débuté la pro-
grammation, vous reviendrez à ce texte ; nous vous indiquerons à quel moment. En
effet, nous avons jugé préférable de regrouper en un unique chapitre tout ce qui a
trait aux cassettes.
Le rangement sur bande magnétique d’un
SAUVEGARDE programme se trouvant en mémoire centrale
D'UN PROGRAMME s’appelle la « sauvegarde ».
Créons un programme ultra-simple afin de le sauvegarder (c’est inutile si vous avez
votre propre programme en mémoire centrale : servez-vous alors de celui-là). Ce
programme comporte deux lignes :
Afin de le sauvegarder sur cassette, vous pouvez ou non lui décerner un nom, obli-
gatoirement écrit « entre guillemets ».
Si vous ne lui attribuez pas de nom,
il faudra quand même frapper les
guillemets nTT mais sans rien écrire dedans,
sans même placer un espace à l’intérieur :
le Basic considérerait cet espace comme
un nom !
Appelons ce programme « ADIEU ». L’ordre de sauvegarder s’écrit CSAVE, avec
SAVE pour sauvegarder précédé de C, pour cassette. L'ordre complet serait donc :
CSAVE
CSAVE “ADIEU”
Le curseur est là : vous n'avez
pas encore frappé sur RETURN,
donc l'ordre de sauvegarde n'est pas
encore exécuté
Vous pourriez dès lors lancer l’enregistrement : celui-ci se fera très rapidement, à la
vitesse de 2 400 « bauds », ce qui correspond à quelque 200 caractères par seconde.
Pour travailler à cette relativement grande vitesse, il faut un matériel impeccable :
magnétophone (ses têtes, surtout) et bande. Comme, en général, tel n’est pas le cas,
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
nous vous conseillons par sécurité d’adopter la vitesse « lente », de 300 bauds,
donc 8 fois inférieure. Encore faut-il indiquer au Basic qu’on change de vitesse. Or,
le mot « lent » se dit « s/ow », en anglais ; vous ajouterez donc à la suite de l’ordre
une virgule, puis un S, ce qui donne :
Par contre,
vous pouvez mettre
un espace après
les guillemets si vous
le désirez, pour le coup d'œil
Attention : pas d'espace
dans les guillemets
Dès lors, le processus est le suivant :
1. Mettez une cassette (vierge, de préférence) dans le magnétophone.
2. Rembobinez-la, remettez le compteur à zéro si votre magnétophone en possède
un. Vous pouvez enregistrer n’importe où sur la bande mais n’oubliez pas de noter
alors l’indication du compteur.
Attention : toutes les bandes commencent par une petite amorce sur laquelle on ne
peut rien enregistrer.
3. Mettez le magnétophone en marche en position enregistrement (et non lecture :
ne vous trompez pas). Laissez passer éventuellement l’amorce, puis frappez sur
RETURN. L'ordinateur va alors exécuter l’ordre ; il commence par émettre un
signal servant à stabiliser le fonctionnement du magnétophone, puis envoie la salve
des ondes traduisant votre programme. Pendant le court instant que cela dure,
vous lirez sur la ligne supérieure de l’écran ;
ou alors, si vous avez donné le nom du programme :
MAGNETOPHONE ET CASSETTES DE PROGRAMMES 27
4, Stoppez alors le magnétophone car la sauvegarde est terminée.
S. Indiquez, sur la cassette, /e nom du programme, où il commence et où il finit sur
la bande, et indiquez enfin la vitesse. Par exemple, ajoutez « ,S » pour préciser
qu’il s’agit de la vitesse lente.
N’omettez jamais de porter sur vos cassettes
toutes les indications utiles. Vous ne vous
énerverez pas, ensuite, à rechercher
« quelque part » un programme donné.
Au cours de la sauvegarde et selon le type de magnétophone que vous possédez,
vous entendrez ou non la « modulation », les trains d’ondes qui sont transférés. Le
bruit en est plutôt désagréable ! Il en ira de même, d’ailleurs, lors de l’opération
inverse, le chargement.
6. Voulez-vous prendre une précaution supplémentaire ? Sauvegardez une seconde
fois ce même programme.
Cela étant fait, on va vérifier que tout a bien fonctionné.
4. Les règles du chargement
Afin de vérifier que la sauvegarde s’est correctement déroulée, on va effacer la
mémoire centrale, afin de recharger ce programme.
Pour effacer la mémoire centrale, utilisez l’ordre NEW qui indique à l’ordinateur
qu’on veut faire le ménage dans la mémoire, la vider, afin de charger un nouveau
programme. Frappez NEW, puis RETURN :
NEW
Ici, vous avez
fait RETURN
Ready
Par acquit de conscience, vérifiez que la mémoire est bien vide en demandant le /is-
tage de ce qu’elle contient, ce qui se commande LIST ; n’oubliez pas le RETURN :
LIST
Aucun listage n'apparait
car il n’y a plus rien en
Ready mémoire
Le processus de chargement est exactement le même que celui qu’on a vu au début
du chapitre. Rembobinez la bande et placez-vous au point de départ du pro-
gramme, puis frappez l’ordre :
Vous avez fait
RETURN
ici
28
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
ou encore, si vous voulez donner le nom :
CLOAD “"ADIEU",S
Il faut obligatoirement charger un
programme avec la même vitesse qu’on a
utilisée pour sa sauvegarde. Ce sera donc
la vitesse lente, indiquée par le suffixe « ,S ».
Dès le RETURN, le curseur revient à la ligne et la 28° ligne, celle au-dessus de
l’écran habituel, indique « SEARCHING... » (« je cherche le programme »).
Démarrez alors le magnétophone en position lecture (et non enregistrement).
Notez bien cette différence :
e A la sauvegarde, on démarre d’abord
le magnétophone avant de frapper RETURN.
e Au chargement, on frappe d’abord
RETURN, puis on lance le magnétophone.
L'ordinateur rencontrant le programme va afficher, tout en haut de l’écran,
« LOADING... » suivi du nom de ce programme si vous l’avez indiqué, et à l’issue
du chargement, il ré-affichera un Ready sur l’écran. Stoppez alors le magnéto-
phone.
Si vous avez fourni le nom du programme,
l’ordinateur ne chargera pas le premier qu’il
rencontre mais uniquement celui dont le nom
est en conformité absolue avec celui que vous
avez donné.
Il est peut-être dommage que l’Oric — 1 n’affiche pas, au passage, les noms des pro-
grammes qu’il croise et qui ne sont pas demandés. Mais on ne peut pas avoir toutes
les qualités.
Bref, le programme se trouve à nouveau en mémoire centrale. Vérifions-le en fai-
sant un LIST, par exemple :
A la fin du chargement
l’Oric affiche ce «prêt !»
PANIONE)
Voici le listage exact
du programme que vous aviez
sauvegardé
Ce listage est parfaitement correct. Vous auriez aussi pu lancer ce programme avec
RUN, ce qui aurait donné :
MAGNETOPHONE ET CASSETTES DE PROGRAMMES 29
Ready
RUN
BONJOUR
En effet, le RUN
Ready affiche «Bonjour»
Il est même possible de faire automatiquement démarrer un programme à l'issue de
son chargement, simplement en ajoutant à la fin de l’ordre de sauvegarde le mot
DEMARRAGE AUTO. Faites-en l’expérience : puisque votre programme est en mémoire centrale,
AUTOMATIQUE sauvegardez-le à nouveau mais en faisant, cette fois (repérez bien où vous l’enregis-
trez sur la bande) :
Puis, effacez la mémoire centrale avec NEW, et rechargez le programme. Automa-
tiquement, il démarrera, ce qui donnera :
Ready
CLOAD "“",S
BONJOUR Aussitôt chargé, le
head programme est exécuté
Vous comprenez, maintenant, pourquoi les cassettes pré-enregistrées vous offrent
souvent des programmes à auto-démarrage : elles ont été enregistrées avec cet ordre
AUTO.
Ajoutons encore que tous les chargements ne seront pas forcément réussis. Dans ce
cas, l’Oric vous préviendra en affichant, après l’ordre de chargement :
FILE ERROR / LOAD ABORTED
Ready
«{l y a une erreur quelque
part : j'ai stoppé le chargement !»
Il ne vous restera plus, alors, qu’à recommencer, peut-être en essayant la seconde
copie du même programme si l’on suppose que la bande puisse être, en un passage
quelconque, défectueuse.
PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES
QUESTIONS SUR LE CHAPITRE II
Ici, exceptionnellement, vous n'aurez pas droit à nos traditionnelles questions.
Jouez plutôt aux « Envahisseurs », par exemple (et, s’il vous plaïf, ne restez pas
forcément sur les vitesses de jeu pour débutants !).
N'oubliez pas que le jeu est une activité intéressante à de nombreux points de vue,
ne serait-ce que pour bien se familiariser avec l’ordinateur.
REPONSES AUX QUESTIONS SUR LE CHAPITRE III
1.PRINT est un ordre d’affichage sur l’écran.
2. PRINT ”’3+2”° affiche 3 +2 (reproduction, puisqu'il y a des guillemets).
3. PRINT 3 +2 affiche 5 (pas de guillemets, donc exécution de l’opération).
4. PRINT ’’3+2 affiche 3 +2. Bon enfant, le Basic accepte que vous ne refermiez
pas les guillemets si vous faites un RETURN.
5. Le symbole ? remplace le mot PRINT. Donc, vous afficherez 5 ; il n’y a pas
d’erreur.
6. Par contre, il y en a une, ici, car on a confondu le lettre O avec le chiffre zéro. La
machine s’en sort en additionnant 19 + 1 et affiche 11, puis s’occupe de la lettre O
qu’elle considère comme une variable à laquelle on n’a rien affecté encore, et lui
décerne un zéro !
7. Rappelez-vous : le symbole de la multiplication n’est pas le X mais l’astérisque
(*). La machine répondra 7 @ car pour elle X3 est aussi le nom d’une variable qui
n’a reçu aucune affectation.
8. C’est une élévation à la puissance 3 ; vous lirez donc 27.
9. L'écran affichera 9/3 = 6.
19. Dans un ordre PRINT, la virgule sert à /a fois à séparer des constantes et à
introduire 4 espaces dans leur affichage. Les deux réponses sont bonnes.
11. A$ est un nom de variable chaîne, grâce au symbole $
12. Oui ; en fin de course, T vaut 1.
CHAPITRE III
L'ORDINATEUR EN « MODE DIRECT »
Voici le premier chapitre consacré à la programmation, dans ce qu’on appelle le
« mode direct ». On donne un ordre à l'ordinateur et, dès la frappe de
« RETURN », il l’exécute. On a déjà exploité ce mode direct avec les cassettes,
aussi va-t-on en profiter pour examiner, ici, d’autres instructions fondamentales.
Le chapitre suivant abordera le mode « programme ».
Principaux thèmes étudiés
Guillemets Elévation à puissance Variable numérique
PRINT Racine carrée Constante chaîne
RETURN SQR Variable chaîne
Syntaxe Virgule dans un PRINT Affectation
Annulation d’une ligne Effacement de l’écran Symbole d’affectation (=)
CTRL/X CTRL/L Noms de variables
Point d’interrogation pour CTRL/H Mots réservés
PRINT CTRL/I Chaînes de caractères
Mode direct CTRL/J Chaîne vide
Rôle des guillemets CTRL/K Concaténation de chaînes
Point-virgule CTRL/M Symbole + de concaténation
Zéro et lettre O Chaînes de caractères Sonorisation des touches
Multiplication (+) Symbole $ CTRL/F
Division (/) Constante Effacement d’une ligne
Point décimal Variable CTRL/N
Virgule décimale Constante numérique
1. L’instruction PRINT
Avec ce chapitre, nous abordons la programmation de l’Oric—1, dans ce langage
qu’on appelle le Basic et dont nous avons parlé au début de ce livre.
Commencez donc par frapper au clavier les mots suivants, en respectant rigoureu-
sement cette façon de les écrire ; cela signifie qu’il faudra placer des espaces comme
GUILLEMETS ils figurent ici, pas davantage (après tout, il sera toujours temps d’essayer après),
ainsi que des guillemets. Les guillemets sont obtenus avec la touche SHIFT : main-
tenez SHIFT enfoncée, puis frappez sur la touche marquée de guillemets, et relâ-
chez le tout.
Rappelez-vous aussi que l’espace arrière,
marqué DEL, sert à effacer le caractère
précédent.
32 PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES
Voici donc ce que vous devez frapper et ce qui apparaîtra sur l’écran, à supposer
que vous veniez de mettre votre ordinateur en service ; le mot nouveau, un ordre du
Basic, est PRINT, ici ; respectez bien son orthographe :
ORIC EXTENDED BASIC V1.
C 1983 TANGERINE
Le curseur
vient ici
47870 BYTES FREE
Frappez cette
ligne
Ready
PRINT "BONJOUR"
Mettez le mot BONJOUR
«entre guillemets»
Le mot PRINT est un mot anglais signifiant « imprimer ». On l’utilisait aux âges
héroïques de l’informatique, quand les écrans étaient rares et chers. On l’a conservé
PRINT avec les écrans mais dans l’acception afficher. Cet ordre Basic ordonne à la
machine d’afficher tout ce qui est encadré par les guillemets ; c’est, aussi, la pre-
mière instruction Basic que vous écrivez. Félicitations !
Pour l'instant, l’ordre figure sur l’écran mais n’a pas encore été acquis par le Basic,
ni donc exécuté. Il manque encore cette indication qu’on pourrait traduire par « À
RETURN vous de jouer, Basic : prenez cet ordre et faites ce que vous avez à faire ! ». Tout
cela s’exprime très simplement : il suffit de frapper sur la touche RETURN
(« retour »).
La frappe de RETURN fait prendre l’ordre
en compte par l’ordinateur. Il faudra
la frapper après un ordre, une instruction.
On verra que RETURN sert aussi à ramener le curseur à la ligne, au début de la
ligne suivante, d’où le nom qui lui a été attribué. Frappez donc sur RETURN ; aus-
sitôt, le Basic obéissant affiche sur la ligne suivante BONJOUR, puis saute une
ligne et vous indique qu’il est de nouveau prêt, ce qui donne :
PRINT "BONJOUR"
BONJOUR
READY
Ceci c'est le Basic qui
l'a affiché, en exécution
de votre ordre
la machine attend
maintenant la suite Essayons maintenant un message plus compliqué ; frappez d’abord la ligne indi-
quée puis faites RETURN, et vous obtiendrez :
.. Et pensez à
frapper ici RETURN
L'ORDINATEUR EN « MODE DIRECT » 33
Le le ?s obtiennent)
avec SHIFT
SYNTAXE
A nouveau, la machine a reproduit fidèlement votre message. Il peut être absolu-
ment quelconque, à la condition d’être encadré par des guillemets ; par exemple :
N'importe quoi !
N'oubliez ni les guillemets, ni
le RETURN
Sachez que la machine ne s'intéresse pas
au sens (au contenu) du message, à la
« sémantique », mais à sa forme, sa
« syntaxe ».
Ainsi, les guillemets lui sont nécessaires. Si vous les oubliez, elle ne comprendra
plus et vous renverra un message d’erreur :
PT a A N'oubliez pas
PRINT ET LES GUILLEMETS ? RETURN
?SYNTAX ERROR
Ready Réponse de la machine :
É «Erreur de syntaxe» car on a omis
les guillemets D Ed
A la limite, elle acceptera que vous ne refermiez pas les guillemets si vous faites un
RETURN :
PRINT "ET L
ET LES GUIL
Ne refermez
pas les
guillemets (mais
ouvrez-les)
Ready
Vous obtiendrez aussi un message d’erreur de syntaxe si vous orthographiez mal le
mot print, ou introduisiez des espaces entre ses lettres, ou l’écriviez en minuscules :
vérifiez-le.
Les mots de commandes doivent être
frappés en majuscules. Ce que vous mettez
dans les guillemets peut être en minuscules
ou majuscules, peu importe, l’ordinateur
respectera votre choix de caractères.
Rappelez-vous qu’on passe des majuscules aux minuscules, et vice-versa, avec
CTRL/T (maintenez CTRL enfoncée et frappez sur T). Après le premier retour aux
majuscules, le mot CAPS (pour « capitales », ce qui signifie majuscules en termes
d'imprimerie), apparaît en haut et à droite de l’écran. Il disparaît lorsque vous
revenez aux minuscules. En mode minuscules, vous obtiendrez des majuscules avec
la touche SHIFT, comme sur un clavier de machine à écrire.
34 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Si vous commettez trop de fautes dans une ligne, n’hésitez pas à frapper RETURN
et à la recommencer ; tant pis pour le message d’erreur : vous en obtiendrez bien
ANNULATION d’autres, vous le verrez. Une autre méthode, plus élégante, consiste à frapper au
D'UNE LIGNE bout d’une ligne qu’on veut annuler (et avant d’avoir fait RETURN) le code
CTRL/X (maintenez CTRL enfoncée et frappez X). Le Basic place alors une barre
CTRL/X
oblique inversée au bout de la ligne, l’annule, et ramène le curseur au début de la
ligne suivante. Par exemple :
Frappez cette ligne …
7. Que vous annulez en faisant
CTRL-X qui se traduit par
ce symbole
Vous pouvez maintenant
frapper autre chose
Dans la ligne ci-dessus, on n’avait même pas mis d’ordre, tel que PRINT. C’est las-
sant, aussi, de toujours frapper ces cinq lettres. Bon, d’accord : remplacez-les par
un simple point d’interrogation.
Dans le code du Basic, un point
POINT d'interrogation peut remplacer le mot
D'INTERROGATION PRINT.
POUR PRINT
Vérifions-le avec cet exemple :
N'oubliez pas
RETURN
Ready
? "BONJOUR"
BONJOUR
s |
nes dy Ca a marché |
On utilisera ce point d’interrogation qui permet d’économiser 4 frappes.
A propos : vous devez maintenant avoir acquis l’automatisme de la frappe sur
RETURN, et ce à la fin de chaque ordre. Aussi ne vous le rappellera-t-on plus
systématiquement, sauf lorsque c’est nécessaire à nos explications. D’autre part,
vous avez pu constater que le mot « Ready » revient constamment ; nous ne le
reproduirons plus sur nos «’écrans » sauf, à nouveau, lorsqu'il se révèlera intéres-
sant à placer.
Enfin, nous vous proposons une convention
d’écriture dans nos « écrans » : tout ce que
vous devez frapper sera indiqué en gras,
alors que les réponses de la machine ou ses
messages resteront en maigre.
Rappelez-vous qu’il ne s’agit que d’une convention, puisqu’en réalité, tous les
caractères auront le même aspect sur votre téléviseur.
MODE DIRECT
Le point d'interrogation
remplace le mot PRINT
ROLE DES
GUILLEMETS
POINT-VIRGULE
L'ORDINATEUR EN « MODE DIRECT » 35
2. Premiers calculs
Vous avez pu constater que, lorsqu’on frappait un ordre au clavier suivi par un
RETURN, la machine l’exécutait aussitôt. C’est cela qu’on appelle le mode direct.
En mode direct, un ordre est aussitôt
exécuté (après RETURN). On appelle encore
ce mode « mode immédiat », ou « mode
conversationnel ».
Si l’on passe aux chiffres, on l’appellera même « mode calculette », voici pour-
quoi. Frappez l’addition suivante, sans placer de guillemets, et faites RETURN ;
surprise : vous n’obtiendrez pas de message d’erreur mais le résultat ! Voici ce que
cela donne :
Bien sûr, vous vous rappelez
qu'il faut faire RETURN ici
Voici le résultat !
Nous avons écrit en gras ce que vous deviez frapper, selon nos conventions. La
machine a répondu 8 ; heureusement ! Recommencez avec des guillemets, cette
fois :
tt line. Est. Avec des guillemets,
? “5+3" cette fois
5+3
Comme précédemment, le Basic s'est
Ainsi, on peut demander au Basic soit de reproduire la formule (dans des guille-
mets), soit d’exécuter le calcul (sans guillemets). Combinons ces deux modes, en
séparant les deux codes par un point-vigurle :
La première expression entre guillemets est reproduite telle, la seconde sans guille-
mets est calculée !
Notez que le point-virgule sert de séparateur
« officiel » dans un ordre PRINT. Il évite
d’avoir à répéter deux fois PRINT, ici.
L’affichage se fera à la suite, sans retour
à la ligne.
Essayons maintenant avec une soustraction, en exécution directe :
36 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Curieux, ce zéro …
La soustraction est classique, maïs pas le zéro.
En informatique, il ne faut pas confondre le
ZERO ET chiffre zéro et la lettre O. Aussi écrit-on
LETTRE O zéro avec une barre oblique. Ne vous
trompez surtout pas en frappant O ou 8 !
On peut, maintenant expérimenter la multiplication et la division, mais il nous
faut noter deux points importants.
MULTIPLICATION ( *)
Le symbole de la multiplication n’est pas le
signe habituel X que l’on confond trop
facilement avec la lettre x, mais l’astérisque
(*). Le symbole de la division est la barre
oblique (/).
DIVISON (/)
Voici ce que donnerait une opération compliquée :
Multiplié par …
? 2345*x67/5
381423
. Et divisé
par
Expérimentons maintenant une opération donnant à la fois un résultat négatif et
une valeur décimale :
Le signe «moins» a La réponse est : — 49,2857143,
bien été placé
Notez la précision de la réponse, fournie avec 7 décimales. Nous devons aussi atti-
rer votre attention sur le fait que le Basic, d’origine américaine, utilise un point
POINT DECIMAL décimal au lieu de notre virgule habituelle.
VIRGULE DECIMALE
N'oubliez jamais que le point décimal
remplace la virgule décimale. Nous écrirons
désormais tous nos nombres décimaux avec
un point.
L'ORDINATEUR EN « MODE DIRECT » 37
ELEVATION A
PUISSANCE
RACINE CARREE
VIRGULE DANS
UN PRINT
Maintenant que vous connaissez les règles, vous pouvez expérimenter toutes sortes
d’opérations compliquées. Ne vous en privez pas. Vous apprécierez ce mode direct
« calculette » qui, en fait, se révèle d’une puissance remarquable. Vous pourrez
aussi introduire des parenthèses à volonté dans vos expressions.
Puisque nous sommes en pleine arithmétique, on va vous indiquer aussi comment
élever un nombre à une puissance, et par exemple, calculer 32.
Le symbole de l’élévation à une puissance
est une flèche verticale, dont vous trouverez
la tête sur la touche du 6. Vous l’obtiendrez
donc avec SHIFT,.
A l'inverse, l’extraction d’une racine carrée s’écrit SQR. Ainsi :
«Racine carrée de …»
Placez obligatoirement
la valeur (entre
parenthèses)
Si vous disposez d’un Oric — 1, exercez-Vous sur diverses opérations !
3. Point-virgule et virgule
On a déjà employé le point-virgule ; recommençons avec les dix premiers chiffres :
Chaque chiffre est reproduit, séparé par un
espace du précédent
Recommencez l’expérience, maintenant, en plaçant une virgule et non un point-
virgule ; cela donnera :
4 espaces entre
deux chiffres
38
EFFACEMENT
DE L'ECRAN
CTRL/J
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Les chiffres ont été espacés de 4 espaces (« blancs »), même lorsqu’il y a eu retour à
la ligne.
La virgule provoquera systématiquement
l’introduction de 4 espaces, quelle que soit
la longueur du nombre affiché ou du
message, Car on peut séparer par des virgules
des messages alphabétiques encadrés par
des guillemets.
Votre écran est peut-être bien rempli, maintenant, Il a même probablement com-
mencé à se « dérouler ». Voulez-vous l’effacer totalement ? Frappez CTRL/L :
maintenez CTRL enfoncée et tapez L. Tout s’efface, le curseur se positionnant en
haut et à gauche :
Après CTRL/L
Il n’est pas nécessaire, ici, de faire RETURN. Puisque nous avons expédié le cur-
seur à l’angle supérieur de l’écran, profitons-en pour expérimenter les touches de
déplacement du curseur, ces 4 touches marquées des flèches ? — et <— de part et
d’autre de la barre d’espacement. On verra leur utilité ensuite (pour dessiner, par
exemple). Notez que quatre combinaisons, avec CTRL ont le même effet (vérifiez-
le sur votre Oric) :
e CTRL/H déplace le curseur d’un pas vers la gauche ;
e CTRL/I en fait autant, mais vers la droite ;
e CTRL/J
va vers le bas ;
e CTRL/K va vers le haut.
Nous ne vous l’indiquons que pour mémoire : les touches fléchées sont plus prati-
ques à l’usage. Il en irait d’ailleurs de même avec RETURN, qui peut être remplacé
par CTRL/M : pourquoi faire simple quand on peut faire compliqué ?
4. Variables et constantes
Lorsqu’on jongle avec des chiffres ou des lettres, il est parfois très agréable de leur
décerner un nom. Si par exemple, nous pensons à 1984, nous pourrions appeler cela
tout simplement ANNEE. Prévenons ia machine que, désormais, ANNEE va cor-
respondre à 1984. Frappez simplement :
Ready
ANNEE=1984
Ready
CHAINES DE
CARACTERES
SYMBOLE $
L'ORDINATEUR EN « MODE DIRECT » 39
Maintenant, vous pouvez demander à l’ordinateur de quelle année il s’agit en fai-
sant PRINT ANNEE, ce qui donne :
? ANNEE
1984
Dans un ordre complet, on pourrait même écrire en utilisant notre fameux point-
virgule, pour placer ANNEE à la suite :
Placez ici un
? "PARIS, LE 14 JUILLE " ; ANNEE
PARIS, LE 14 JUILLET 1984
Ready
La machine a remplacé
ANNEE par sa valeur
L’en-tête complète « Paris, le 14 juillet 1984 » peut, elle aussi, se voir remplacer
par un nom ; appelons-le DATE.
Il faut indiquer au Basic que DATE contient
non seulement une suite de chiffres, mais
aussi des lettres et même des symboles
divers. C’est ce qu’on appelle une « chaîne
de caractères » ; on la placera d’ailleurs
entre guillemets. Pour cela, on va faire suivre
son nom du symbole « dollars » ($).
Le symbole $ précise qu’il s’agit d’une chaîne de caractères, une série de caractères
absolument quelconques et mélangés. On écrira donc DATES, sans espace. Voici
ce que cela donnerait :
On affecte au nom DATES son
équivalent...
Read
DATES="PARIS, LE 14-7-1984"
Ready
? DATES
FRRESNRS Puis on demande
Ready à l'ordinateur d‘écrire
DATES, ce qu'il fait J_ _
aussitôt
Cette procédure est importante à bien comprendre : à un rom, on fait correspon-
dre un nombre ou une chaîne de caractères (mais dans ce cas, le nom est immédiate-
ment suivi du symbole dollars et la chaîne est placée « entre guillemets »). Recom-
mençons, simplement avec des chiffres :
40
CONSTANTE
VARIABLE
CONSTANTE
NUMERIQUE
CONSTANTE CHAINE
VARIABLE NUMERIQUE
VARIABLE CHAINE
AFFECTATION
SYMBOLE
D'AFFECTATION(=)
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
|
Il
"|
|
|
|
©
©
à
Q
Le]
CO)
Q-
2
|
|
|
|
|
|
|
|
|
|
|
|
N
Ready
? N
3 Puis on demande N : c'est
bien 3
Ready
2? X
@
R e a d ÿ ee D nn CE
Là on demande X, mais comme on ne
lui a attribué aucune valeur au préalable,
l'ordinateur décrète qu'il vaut zéro!
SR Et
Sans affectation préalable, la valeur d’un nombre est zéro.
En informatique, le « nom » est appelé une
« variable » et ce qui lui correspond est une
« constante ».
Ainsi, N est une variable numérique et 3, une constante numérique. On peut passer
à une variable chaîne en ajoutant le suffixe $ à N ; dans l’exemple suivant, la cons-
tante chaîne est BONJOUR :
Notez que N$ est un nom différent de N
tout court, pour le Basic. N vaut toujours 3,
comme on l’a défini ci-dessus.
Il nous faut maintenant insister sur ce qu’on a appelé l’affectation, l'attribution
d’une constante à une variable.
L’affectation est faite à l’aide du symbole
égal (=). Mais attention : il ne s’agit plus du
tout du symbole mathémathique « égal »
et sa signification est ici tout à fait
différente.
On a adopté ce symbole = car il a le mérite d’exister sur tous les claviers. Créer un
nouveau symbole aurait posé des problèmes de clavier. Voici quelques exercices qui
vont vous faire comprendre ce que signifie l’affectation (nous avons seulement sup-
primer les Ready entre les différents ordres que vous frappez et/ou les réponses de
la machine) :
L'ORDINATEUR EN « MODE DIRECT » 41
On attribue d’abord 3 à M,
puis on demande Ja
valeur de M
Maintenant, c'est 5
qu'on attribue à la même variable
{« variable» est donc un nom bien trouvé 1)
Une variable, c’est un nom, immuable : vous pouvez lui attribuer des valeurs suc-
cessives mais attention : à un instant donné, /a variable ne peut se voir affecter
qu'une seule constante. Si vous lui affectez une nouvelle constante, la précédente
est perdue ; on peut dessiner ainsi ce phénomène, en assimilant une variable à un
tiroir, qui peut contenir des constantes successives :
Ordre :
A la trappe
Le nom M, représenté comme une boîte, correspond très exactement à une cellule
(ou un groupe de cellules) de la mémoire centrale, qui ne peut contenir qu’une seule
valeur à un moment donné. C’est pourquoi une nouvelle valeur chasse l’ancienne.
Appliquons ce principe à quelque chose d’un peu plus fort, sachant que l’ancienne
valeur de M est 5 :
M=M+ 2
Ca, c'est plutôt
? M bizarre: lisez la suite
42
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
NOMS DE VARIABLES
MOTS RESERVES
CHAINES DE
CARACTERES
CHAINE VIDE
Rappelez-vous : le signe = n’est plus une
égalité mathématique, mais un symbole
d'affectation.
Interprétez la première ligne ci-dessus par « M se voit affecter l’ancienne valeur de
M, plus 2 ». Ce qui fait bien 7.
Quels noms pouvez-vous attribuer à vos variables ? Toutes sortes de noms, mais
attention :
Votre Basic ne retiendra que les deux
premiers caractères du nom attribué à la
variable.
Ainsi, pour lui, AN et ANNEE sont le même nom, puisqu'il n’aura retenu que les
deux premières lettres de ANNEE. Par conséquent, usez des noms dépassant deux
caractères avec modération et rigueur ; dans ce cas, choisissez des noms expressifs,
évocateurs : AGE pour l’âge, par exemple, et non XYZ.
Le nom de variable doit obligatoirement
commencer par une lettre de l'alphabet, mais
peut comprendre ensuite des chiffres.
Ainsi, MI est autorisé, mais pas 1M . Nous vous conseillons d’ailleurs, très généra-
lement :
e D'’utiliser une unique lettre de l’alphabet comme nom de variable.
e Ou alors, deux lettres.
e Ou encore, une lettre et un chiffre.
Vous ajouterez au bout le symbole $ s’il s’agit d’une chaîne de caractères (nous
allons y revenir).
Vous n’en êtes cependant encore pas quitte avec ces noms. En effet, toute une liste
de mots est frappée d’interdit :
e D'abord, tous les mots que le Basic utilise pour ses propres besoins. Par exemple,
PRINT ne peut pas servir comme nom pour une variable. La liste complète de ces
mots interdits dont le Basic se réserve l’usage et qu’on appelle, pour cela, mots
réservés, est donnée en fin d’ouvrage (c’est la liste des ordres Basic).
e Ensuite, des mots incluants ces mots réservés. Par exemple, ON est un mot
réservé ; donc, vous ne pouvez pas employer ON, non plus que DON, ou MAI-
SON, ou SONGE...
Si vous tentiez de le faire, le Basic refuserait votre ordre en affichant un
« ?2SYNTAX ERROR ». Ne vous entêtez pas (il est plus têtu que vous !), changez
de nom ! Notez aussi que tous les noms de variables doivent s’écrire en majuscules.
5. Chaînes de caractères
Revenons aux chaînes de caractères, qu’on a définies comme étant une suite de
caractères alphanumériques, symboles, espaces, etc. Voici quelques chaînes de
caractères : « Belle Marquise, vos beaux yeux me font d’amour mourir ! », ou
« Paris, le 14 juillet 1789 » ; ou bien « Ah ? » ; un espace peut constituer une
chaîne : “ ”,et on peut même ne rien mettre dedans : ce sera une chaîne vide, qui
s’écrit "”
L'ORDINATEUR EN « MODE DIRECT » 43
CONCATENATION
DE CHAINES
SYMBOLE + DE
CONCATENATION
SONORISATION
DES TOUCHES
CTRL/F
Un nombre pur devient une chaîne dès lors que vous le mettez entre guillemets ;
ainsi, 1789 est une constante numérique mais pour le Basic, « 1789 » avec des guil-
lemets devient une constante chaîne de caractères. Son nom de variable devra être
suivi du symbole $.
Utilisons maintenant 3 chaînes ; observez ce qui va se produire. On a volontaire-
ment écrit des chaînes en majuscules et minuscules ; exercez-vous à taper ces deux
sortes de caractères.
Rappelez-vous : à la mise sous tension,
l’Oric ne fournit que des majuscules. Pour
passer au mode « machine à écrire » avec
majuscules et minuscules, faites CTRL/T.
Vous aurez directement les minuscules ; les
majuscules seront obtenues avec SHIFT
maintenue enfoncée. Pour revenir au mode
« tout en majuscules », refaites CTRL/T.
Attention, tous les ordres Basic et les noms
de variables doivent être écrits en majuscules.
Exercez-vous donc à utiliser
aussi les minuscules !
A$="Bonjour"
B$=" ”
C$="Madame"
? A$+B$+CS$
Cette chaîne ne comporte
qu'un unique espace
Bonjour Madame
La dernière ligne peut surprendre : on a mit bout à bout les trois chaînes, ce qu’on
appelle « concaténer ».
Le symbole + n’est plus, ici, le symbole
de l’addition mais celui de la concaténation.
Donc, A$ + B$ + CS signifie tout simplement concaténer les trois chaînes.
Généralisons, maintenant, l’ordre d’affectation. C’est le Suivant :
Le symbole
d'affectation
Sn
L'attribution
Le nom à gauche
du symbole =
Nom de variable = Constante
Avant de terminer ce chapitre, ajoutons encore quelques petites choses, relatives au
clavier. Chaque frappe est sonorisée, ce que l’auteur apprécie (on « entend » qu’on
a frappé un caractère). Si, toutefois, vous vouliez supprimer ce son, faites
CTRL/F : les frappes ne seront plus sonorisées. Pour revenir à l’état antérieur,
refrappez CTRL/F.
44 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
EFFACEMENT
D'UNE LIGNE A propos de CTRL, sachez aussi que CTRL/N efface une ligne sur l’écran, celle
qui est marquée par le curseur. Vérifiez-le, en emmenant le curseur sur des lignes
existantes, puis en faisant CTRL/N. On usera très modérément de cet ordre.
CTRL/N
QUESTIONS SUR LE CHAPITRE III
C’est facile ; cochez la bonne réponse !
1. L’ordre PRINT signifie :
Afficher sur l’écran
[1 Exécuter une opération
| Que répondra la machine aux ordres suivants :
. PRINT ”’3 +2”
Ü 3+2
Ü 5
. PRINT 3 +2
[l 3+2
5
. PRINT 73 +2
7] ?SYNTAX ERROR
7] 3+2
.23+2
[J] ?SYNTAX ERROR
CO 5
. 2? 19+10
[1 29
118
LTIX3
CO] 21
[170
.2373
2SYNTAX ERROR
27
9.9 79/3=?; 4+2
Ü 3=4+2
[ 9/3=6
Bon. Et maintenant :
19. À quoi sert la virgule dans un ordre PRINT.
[ A séparer des constantes
[1 A introduire 4 espaces dans leur affichage
. A$ est un nom de variable :
Numérique
C[] Chaîne
12. A-t-on le droit d’écrire successivement.
T=3
T=3%x2
T=T/6
Et que donnera l’ordre d’afficher T ?
Réponses page 30
CHAPITRE IV
LE MODE PROGRAMMÉ
Le chapitre précédent ne constituait qu’une petite mise en condition : on va, main-
tenant, passer à la création de programmes réels. Pour cela, on va rédiger des listes
d'instructions qui ne seront, cette fois, exécutées en salve que sur un ordre donné,
et non plus une par une, au fur et à mesure de leur frappe. Ce mode s'appelle le
« mode programmé », par opposition au « mode direct ».
Principaux thèmes étudiés
Numérotation des lignes CTRL/C
RUN Branchement inconditionnel
Adjonction d’une ligne Effacement programmé de l’écran
LIST . CLS
Mode programmé Pour sauter une ligne
Remplacement d’une ligne CONT
Suppression d’une ligne Code ASCII
Messages d’erreur CHRS
Effacement de la mémoire Listage partiel
NEW Modification d’une ligne
Programme de conversion CTRL/A
INPUT Temporisation
GOTO WAIT
Organigramme EDIT
REDO FROM START
1. Numérotation des lignes
Dans ce mode direct étudié dans le chapitre précédent, un ordre frappé au clavier
était immédiatement exécuté, dès la frappe sur la touche RETURN. Or, un pro-
NUMEROTATION gramme informatique peut se composer de plusieurs ordres successifs (jusqu’à des
DES LIGNES milliers...) : par conséquent, il faut pouvoir les ranger en mémoire sans les exécuter
au fur et à mesure ; on passera à cette exécution au seul moment opportun. C’est
un tel mode qu’on appelle le mode programmé, ou encore le mode programme.
Première expérience, frappez :
de Au RETURN, que se) __ __
passe-t-il ?...
Mettez ici
le numéro 10
. I n’y a plus recopie, exécution : le
curseur revient en début de ligne
La machine n’a pas exécuté le PRINT « Bonjour » et le curseur est revenu à la
ligne, attendant une nouvelle instruction.
46 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Le seul fait de faire précéder l’instruction
par un numéro d’ordre fait entrer la machine
en « mode programmé ».
Le numéro d’ordre, ou numéro de ligne d’instruction, peut être quelconque. Met-
tez 1, ou 2, ou 3, ou 78, ou 357,... peu importe : l’essentiel, c’est la présence d’un
numéro.
Qu'est devenue l’instruction numérotée 19, alors ? Elle a été rangée en mémoire
par le Basic, dès la frappe de RETURN. En voulez-vous la preuve ? On va lancer
son exécution : pour cela, il faut utiliser le mot magique RUN (quelque chose
comme : Marche !). Essayez tout d’abord de frapper ces trois lettres, suivies d’un
RETURN :
La machine a éxécuté
le programme (d’une seule ligne)
se trouvant en mémoire
Frappez cet ordre sans
numéro (donc, en
mode direct, lui)
Vous pouvez désormais relancer ce programme autant de fois que vous le voudrez,
sans refrapper l'instruction, simplement avec RUN. Vérifiez-le : vous obtiendrez à
chaque fois le même résultat. Cette ligne 19 constitue un programme minimal : pas-
sons à un programme de longueur double. Frappez maintenant une nouvelle ligne
19, terminée par un point-virgule, puis la ligne 29 suivante, et faites RUN :
Respectez N'oubliez pas ce
les numéros : point-virgule pour
dix, puis afficher à la suite
vingt. Vous
allez
comprendre
pourquoi
9 ? "BONJOUR;
0 ?
"MADAME "
Catastrophe : on
a oublié l’espace !
L'ordre RUN — donné en mode direct, lui, remarquons-le à nouveau — provoque
l’affichage de BONJOURMADAME car on a oublié un espace. Qu’à cela ne
ADJONCTION tienne ; créons-en un et pour cela, imaginons une instruction, de numéro 15, qui
D'UNE LIGNE devrait s’intercaler entre 19 et 29. Quel que soit la ligne au début de laquelle votre
curseur se trouve, frappez :
Cette chaîne ne contient
qu’un espace
15 ?
BONJOUR , MADAME
N'oubliez pas le
point-virgule
L'espace s’est bien placé entre BONJOUR
et MADAME. Comment cela se fait-il ?
LIST
MODE PROGRAMME
C'est un nom de
variable numérique
interdit
LE MODE PROGRAMMÉ 47
Avez-vous bien saisi, maintenant, le rôle du
point-virgule dans un ordre PRINT ? Il
supprime le retour à la ligne ; l’affichage
suivant se fera alors sur la même ligne.
Pour comprendre ce qui s’est passé avec les lignes du programme, demandez au
Basic de vous fournir le listage complet du programme qu’il a actuellement en
mémoire, donc des trois lignes d’instructions que vous avez frappées.
Demandez le listage se dit LIST. Frappez
ces quatre lettres, puis faites RETURN.
C’est donc un ordre en mode direct.
Voici ce que cela donnera :
— — N ‘oubliez pas RETURN,
ici
"BONJOUR" ;
* MADAME "
Remarquez que le Basic a remplacé les points d’interrogation par le mot qu’ils
représentent, PRINT. Il vous affiche vos trois lignes et a introduit la ligne 15 entre
la 19 et la 20.
Vous comprenez, maintenant, pourquoi on
a numéroté les lignes 19, puis 28 (on aurait
continué par 39, puis 49, etc.) ? Lorsqu’on
programme, on risque toujours d’oublier une
instruction : elle sera facile à introduire si
l’on s’est réservé des places dans la
numérotation.
Tenez compte d’un autre phénomène important : le Basic ne s’intéresse qu’à
l’ordre croissant des numéros, et non à leur valeur « absolue ». Il rangera les ins-
tructions en mémoire selon leur ordre croissant et les exécutera dans le même ordre,
quel que soit le « pas ». Ainsi, au lieu d’écrire 15 pour l’instruction manquante, on
aurait pu mettre 11, ou 12, ou 13, ou 14, ou... 19 : elle se serait placée entre 19 et 29
de la même façon.
Prenez donc, vous aussi, l’habitude de
numéroter les instructions par « pas » de 18.
Accessoirement, remarquez autre chose. On vient de voir que le fait de commencer
une ligne par un numéro provoque le passage en mode programmé ; or, rappelez-
vous ce qu’on a dit dans le chapitre precédent, à propos des noms de variables : ils
ne doivent pas commencer par un chiffre. Dans ce cas, en effet, le Basic imaginerait
que vous avez voulu numéroter une l'gne. Si vous écriviez :
48 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
puis faisiez RETURN, le Basic penserait qu’il s’agit de la ligne 5 avec l’affectation
R = 8. Il introduirait donc cette ligne, comme le prouve le listage :
Le nom (interdit) de variable
LIST 5 R a été interprêté comme
5 R=8 la ligne 5, avec la variable
19 PRINT "BONJOUR"; R
15 PRINT * ‘; ar 7
29 PRINT "MADAME"
Laissons cette ligne 5, pour l'instant, car elle n’interviendra pas dans l’exécution du
programme (qui ne demande pas l’affichage de R).
2. Les corrections
Supposons qu’au lieu d’écrire Bonjour Madame, on veuille mettre Bonjour Mon-
sieur : il faut modifier la ligne 20, en créer une autre plus exactement. Frappez-là
REMPLACEMENT ainsi :
D'UNE LIGNE
29 ? "MONSIEUR"
"BONJOUR" ;
“MONS I EUR"
La nouvelle ligne 29 a pris la place de l’ancienne, qui est perdue.
Pour remplacer une ligne d’instruction par
une autre, il suffit de frapper la nouvelle
instruction avec le même numéro de ligne.
En poussant ce principe à son extrême, on peut se demander ce qui se passerait si
l’on frappait un numéro de ligne existant, puis rien après, sauf le RETURN ? Et
SUPPRESSION bien, la nouvelle ligne vide prendrait la place de l’ancienne, l’effacerait. Vérifions-
D'UNE LIGNE le avec la ligne 5, inutile :
* BONJOUR" ;
"MONS | EUR"
L'ancienne ligne
5 a bel et bien
été supprimée
Rd
LE MODE PROGRAMMÉ 49
MESSAGES D'ERREUR
EFFACEMENT
DE LA MEMOIRE
Demandez maintenant
le listage
du programme …
Pour supprimer une ligne de programme, il
suffit de frapper son numéro puis de faire
RETURN.
Rappelez-vous aussi que, pour supprimer une ligne en cours de frappe, donc avant
d’avoir fait RETURN, on peut frapper CTRL/X qui l’annule. Ou alors, faire des
DEL successifs.
CTRL/X place une barre oblique inversée à la
fin de la ligne en cours, l’annule, et ramène
le curseur au début de la ligne précédente.
Enfin, notez encore un point important, afin de ne pas être surpris par la suite. Si
vous frappez une instruction comportant une erreur, le Basic pourra :
e Soit la détecter aussitôt, dès la validation par RETURN et vous le signaler en
refusant l’ordre (par exemple, en affichant « ?SYNTAX ERROR »).
e Soit ne pas la détecter au RETURN, donc l’accepter, mais s’apercevoir de
l’erreur au RUN. Dans ce cas, il vous affichera l’un de ces nombreux messages
d’erreur dont il a le secret.
Si, donc, après un RUN l'ordinateur vous indique une erreur (en précisant son
numéro de ligne), vérifiez attentivement la ligne indiquée pour la découvrir. Même
si cette erreur ne vous saute pas immédiatement aux yeux, restez persuadé que c’est
le Basic qui a raison et qu’il y en a bien une. A ce propos, méfiez-vous des noms de
variables comportant un mot réservé : ce n’est pas toujours évident.
3. Effacements de la mémoire et de l’écran
On a déjà introduit plusieurs ordres en mémoire ; comment les effacer en bloc, tou-
tes les lignes d’un coup ? Une méthode radicale consiste à arrêter un instant
l’Oric— 1, puis à le remettre en service ; ses mémoires vives étant vo/atiles, elles
vont perdre toutes leurs informations.
Une méthode plus élégante consiste à signifier à l’ordinateur qu’on veut libérer les
mémoires pour créer un nouveau programme. C’est l’ordre NEW, pour nouveau ;
« entrez-le » en mode direct (le mot entrer fait partie du jargon de l’informatique ;
il signifie : frapper au clavier puis valider avec RETURN). Si, aussitôt après, vous
demandez un LIST, vous n’obtiendrez plus rien :
Ready
NEW Ordre pour effacer
la mémoire
Ready
LIST
Ready … Mais il a été effacé : le Basic
n'affiche donc plus rien !
Les valeurs que vous aviez tapées ou que le programme avait calculées ont disparu
aussi, mais l’écran reste bien rempli ; profitons-en pour l’effacer. Vous souvenez-
vous comment ? Oui, bravo : avec CTRL/L. Maintenez CTRL enfoncée et frappez
L : tout s’efface et le curseur revient à l’angle supérieur gauche.
4. Quelle est la vitesse du bateau ?
On va profiter de ce bel écran pour rédiger un programme de caractère utilitaire : à
50
PROGRAMME DE
CONVERSION
INPUT
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
quoi correspond, en kilomètres par heure, la vitesse d’un bateau donnée en
nœuds ? Dire qu’un bateau « file 15 nœuds » signifie qu’il se déplace à la vitesse de
15 milles marins à l’heure, un mille marin valant 1 852 mètres (toutes choses que
vous saviez). Le programme suivant va convertir les nœuds en kilomètres-heure ; il
consiste à multiplier par 1,852 la vitesse en nœuds.
Rappelez-vous qu’en Basic, la virgule
décimale est remplacée par un point décimal
et que le symbole de la multiplication est
l’astérisque (*).
Entrez en machine le programme suivant, où N est le nom de variable de la vitesse,
en nœuds, et KM le nom de variable de la vitesse en km/h :
Formule de
calcul de la vitesse
Laissez ici
un espace
19 N=15
20 KM=N*x1.852
30 ? "La vitesse est de
En frappant ce programme, rappelez-vous que le texte des messages entre guille-
mets peut être en minuscules, mais jamais les noms des variables ni d’ailleurs les
ordres, tels que RUN, ou LIST, obligatoirement en majuscules.
A la ligne 19, on attribue la constante 15 à la variable N (nœuds) ; en 29, on calcule
la vitesse en kilomètres-heure, mais on n’affiche toujours rien. Ce n’est qu’en 3ÿ
qu’on commande l’affichage PRINT (avec ?) d’une formule complexe : tout ce qui
est placé « entre guillemets » va être reproduit tel, mais au centre, KM sera rem-
placé par sa valeur.
Lancez ce programme avec RUN et vous obtiendrez en-dessous :
RUN
La vitesse est de 27.78 km/h
En effet, 15 nœuds correspondent bien à 27,78 km/h, puisque c’est l’ordinateur
qui le dit. Essayez d’autres vitesses en nœuds, en refrappant la ligne 19 et en met-
tant d’autres valeurs à la place de 15. Puis, quand vous en aurez assez de refrapper
cette ligne, nous vous montrerons une façon plus intéressante de procéder.
5. L'ordre d’entrée INPUT
Cette fois, on va confier au programme le soin de vous interroger sur la vitesse en
nœuds choisie. Pour cela, on remplace la ligne 19 par une nouvelle ligne compor-
tant un ordre de « demande d’entrée d’une nouvelle donnée », ce qui se dit INPUT
(entrez) en Basic.
Vous vous souvenez que, pour remplacer une ligne, il suffit de refrapper la nouvelle
avec le même numéro. Faites donc, en frappant les cinq lettres de INPUT :
19 INPUT N
En majuscules, ne
l’oubliez pas !
LE MODE PROGRAMMÉ si
Vérifiez, avec LIST, que la substitution s’est bien faite :
LIST Tout va
p N bien
1
"La vitesse est de “"; KM; "km/h
Parce que le Basic écrit le mot PRINT en
toutes lettres dans le listage, il provoque un malencontreux
retour à la ligne. Tant pis : il faut s’y faire.
SE
Effacez donc à nouveau l’écran avec CTRL/L, puis lancez un RUN et observez ce
qui s’affiche : un simple point d’interrogation au début de la ligne ! Cela donne :
Le curseur est ici
La machine a posé ce
point d'interrogation
En effet, lorsque le Basic rencontre un ordre INPUT (ce qu’il vient de faire), il affi-
che un ? et stoppe toute activité, attendant que vous frappiez une donnée au clavier
que vous validerez avec un RETURN. Dès lors, il poursuit l’exécution du pro-
gramme.
Attention : ne confondez pas le ? affiché
par le Basic qui vient de rencontrer un
INPUT avec le ? que vous placez pour
remplacer PRINT. C’est bien le même
symbole, mais pour deux choses différentes.
En réponse à la demande du programme, frappez par exemple 9, pour voir, puis
faites RETURN ; l’affichage complet sur l’écran sera :
Vous avez frappé ce 9,
puis fait RETURN
RUN
? 9
La vitesse est de 16.668 km/h
Vous pouvez frapper à nouveau sur RUN et introduire d’autres valeurs, l’essentiel
étant que vous compreniez parfaitement le fonctionnement de INPUT.
6. Et si l’on recommençait ?
Si vous aviez de multiples conversions à exécuter, les frappes successives de RUN
pour relancer le programme seraient fastidieuses. Dans ce cas, il est plus simple
d’ajouter une nouvelle instruction, à la fin de ce programme, qui lui ordonne de
recommencer en renvoyant à son début.
52
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
GOTO
ORGANIGRAMME
On appelle cela
une «boucle»
ue
Cette nouvelle instruction portera le numéro 4ÿ. Elle ordonnera au programme
d’aller sans discussion à l’instruction 19, donc de revenir à son début. Aller à se dit
go to, en anglais ; et s’écrit en un seul mot GOTO. Entrez :
49 GOTO 19
19 INPUT N
29 KM=Nx1.852
39 PRINT "La vitesse est de “;KM;" km/h
49 GOTO 16
On peut représenter ce programme par un petit dessin qu’on appelle un organi-
gramme. Le voici :
Combien de nœuds
voulez-vous ?
Ligne 10
Affichage du résultat dans son
message Ligne 30
Organigramme du
programme de conversion
Au passage, notez que l’organigramme répond à quelques règles de dessin qui veu-
lent que les ordres d’entrée (INPUT) ou de « sortie » vers l’écran (PRINT) soient
inscrits dans des parallélogrammes, alors que les ordres d’exécution « internes » à
la machine figurent dans des rectangles.
Toujours est-il que cet organigramme montre bien que, de la fin du programme, on
repart à son début en une « boucle ». Faites RUN ; la machine va vous interroger
une première fois : supposons que vous frappiez 9. Elle va afficher le résultat puis
vous ré-interroger à nouveau : on suppose que vous frappez 11 ; puis ça continue,
et vous frappez 7... Cela donnera sur l’écran :
REDO FROM START
LE MODE PROGRAMMÉ 53
Elle attend, en effet,
la frappe d’un nombre
? 9
La vitesse est de 16.668 km/h
? 11
La vitesse est de 29.372 km/h
9 7
La vitesse est de 12.964 km/h
?
PR
La machine ne se lasse pas ———
et en redemande … On
suppose que vous avez fini vos conversions
En effet, elle obéit aveuglément au programme et ne saura pas que vos calculs sont
terminés. Si vous frappiez n’importe quoi d’autre que des chiffres, elle serait inter-
loquée :
De guerre lasse, vous avez
frappé ceci
? Mais j'ai fini !
?REDO FROM START
9
Traduction (approximative) de la
réponse de la machine : «Je ne veux pas
le savoir; recommencez votre entrée !»
La formule « REDO FROM START » signifie, en effet : « Refaites à partir du
début votre frappe ». Comment indiquer à cette obstinée que nous en avons ter-
miné ? Simplement en frappant la combinaison CTRL/C, ce qui donnera, si l’on
reprend la fin de l’écran précédent :
= Ici, vous avez frappé
CTRL/C
Le machine est. désormais, prête à accepter d’autres ordres, même un nouveau
RUN pour relancer le même programme.
En général, lorsqu'on utilise une instruction INPUT, on s’arrange pour qu’un mes-
sage explicatif précède le point d’interrogation sur l’écran. Vous obtiendrez ce
résultat en créant une nouvelle ligne, 5 par exemple ; mais il faudra aussi que le
GOTO de la ligne 4ÿ renvoie en 5 et non plus en 19, ce qui va vous obliger à refrap-
per ces deux lignes :
5 ? "Donnez la vitesse en noeuds :"
49 GOTO 5
De ce fait, le programme complet, suivi de son lancement, donne :
54
BRANCHEMENT
INCONDITIONNEL
EFFACEMENT
PROGRAMME
DE L'ECRAN
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
5 PRINT "Donnez la vitesse en noeuds:
19 INPUT N
20 KM=N*x1.852
39 PRINT “La vitesse est de “;KM; "km/h
49 GOTO 5
RUN
Donnez la vitesse en noeuds
? 6.78
La vitesse est de 12.55656 km/h
Donnez la vitesse en nœuds:
?
(Es jusqu’à un
CTRL/C
Faites un CTRL/C pour stopper ce programme.
Notez encore que l’ordre GOTO commande
un branchement « inconditionnel », sans
discussion, à la ligne indiquée. C’est
pourquoi on l’appelle « branchement
inconditionnel ».
7. Effacement programmé de l’écran
On peut fignoler ce programme en commençant, dès le RUN, par effacer l’écran.
Oui, mais comment introduire un CTRL/L dans le programme ? C’est parfaite-
ment possible ; la preuve, on vous montrera comment plus loin. Mais la méthode la
plus simple consiste à introduire l’ordre d’effacement de l’écran, ce qui se dit en
anglais « Clear screen » (effacer l'écran) et s’écrit, en abrégé, CLS. Essayez-le
d’abord en mode direct ; frappez CLS, puis RETURN, et vous obtiendrez le bel
écran suivant :
Ayant vérifié que CLS fonctionne, vous pouvez l’introduire maintenant dans le
programme, par exemple en ligne 3 :
Dès lors, et avec le RUN, /e programme commence par effacer l'écran ; vous n’y
trouverez plus que les lignes dont vous avez commandé l’affichage.
Un dernier défaut subsiste encore : les réponses ne sont pas séparées de nouvelles
questions ; introduisons un saut de ligne, d’un calcul à l’autre, avec cette ordre
bizarre à première vue :
LE MODE PROGRAMMÉ 55
POUR SAUTER
UNE LIGNE
Etc, jusqu'au CTRL/C
CONT
Le programme reprend et
attend une nouvelle valeur
à convertir
35 ? Qu'est-ce-que
RS ES ES cela signifie ? ]
Ici, on a frappé un numéro de ligne suivi par un ordre PRINT (? en abrégé), suivi
lui-même par. rien du tout ! Dans ce cas, le Basic va lire ce PRINT et s’apercevra
qu’il ne doit rien afficher ; par conséquent, il sautera une ligne. Revoyons le pro-
gramme complet, d’abord :
LIST
3 CLS
5 PRINT "Donnez la vitesse en noeuds:"
19 INPUT N
20 KM=Nx1.852
30 PRINT "La vitesse est de “;KM;"km/h
35 PRINT
49 GOTO 5 Pour sauter une
ligne avant de
RUN recommencer
Avec le RUN puis le RETURN, vous verrez :
Donnez la vitesse en noeuds:
? 33
La vitesse est de 61.116 km/h
Ici, une ligne
Donnez la vitesse en noeuds : a été sautée
7?
Notez bien le rôle de ce PRINT suivi par
rien du tout (si ce n’est RETURN) : il sert
à sauter une ligne.
Deux PRINT successifs auraient servi à sauter deux lignes, par exemple.
Pour en terminer avec ce programme, vous faites un CTRL/C mais, pris de
remords, vous voulez continuer vos conversions : que faire ? Frappez simplement
CONT, pour continuer, et il reprendra au point exact où vous l’aviez lâché. La
séquence serait la suivante :
Donnez la vitesse en noeuds:
? 5
La vitesse est de 9.26 km/h
la vitesse en noeuds:
Donnez
?
Vous avez fait, ici,
un CTRL/C …
.… Mais vous vous reprenez et
voulez continuer : frappez
ceci
56
Um | que caractère se dit « character » en anglais, on comprendra que l’ordre se code
TE,
Les parenthèses sont obligatoires : autrement,
le Basic ne comprendrait pas
PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES
Dès lors, vous pouvez effectivement continuer.
8. Le code ASCII
Sachez une chose importante : chaque caractère que vous pouvez frapper au cla-
vier, qu’il soit simple ou combiné avec SHIFT ou CTRL, dispose d’un code numé-
rique allant de 9 à 255.
L'ensemble de ces codes est normalisé (plus ou moins...) et relève des normes
ASCII, ce qui se prononce Aski et vient de « American Standard Code for Infor-
mation Interchange ». Les normes strictes ASCII, allant de 32 à 127, sont données
en fin de ce livre ; aux autres codes correspondent des ordres divers ou des caractè-
res graphiques sur lesquels on reviendra.
On peut demander au Basic un caractère quelconque en frappant son code. Sachant
CHR ; en outre, il doit être suivi du fameux symbole dollars ($) puisqu'il s’agit de
caractères précisément. On écrira donc PRINT CHR suivi du code du caractère
voulu. Le T, par exemple, a pour code 84, ce que vous pouvez vérifier dans le
tableau ASCII ; pour afficher un T, vous pourrez écrire (faites-le en mode direct) :
er er ne Vous voulez obtenir le caractère
? CHR$(84) correspondant au code 84 …
T
…… La machine vous
Tentez votre chance avec d’autres valeurs ; par exemple, le / minuscule se code
116 : il y a toujours une différence de 32 entre majuscules et minuscules.
Or, l’effacement qui se frappe avec CTRL/L, possède aussi son code : c’est le 12.
Vous devinez alors que l’on puisse aussi commander l'effacement avec ?
CHRS(12). Vérifiez-le en mode direct : l’effet sera semblable à celui de CLS, le mot
« Ready » venant alors toutefois sur la 3° ligne et non sur la seconde :
Après un
? CHRS (12)
en mode direct
Vous pouvez introduire cet ordre dans notre programme précédent, en 3, à la place
de CLS :
= — Pour effacer l'écran
Relancer le programme : vous n’y verrez guère de différence, et vous n’en verrez
plus du tout si vous ajoutez un point-virgule au bout de la ligne 3, puisque grâce à
lui vous supprimez un passage à la ligne !
LE MODE PROGRAMMÉ 57
LISTAGE PARTIEL
{oi les 4 lignes,
jusqu'à 20
(ie le listage, de 30
à la fin du programme
SR" Re,
N'oubliez pas
le tiret après
le numéro de ligne, cette fois
9. L'édition
Vous l’apprendrez vite à vos dépens, la mise au point d’un programme fonction-
nant comme on l’espérait impose bien des retouches et des corrections. Nous avons
déjà passé en revue certaines méthodes, mais il vous faut d’emblée aller encore un
peu plus loin.
Vous serez amené à vous servir fréquemment de ces diverses méthodes ; c’est pour-
quoi nous vous invitons à lire ce passage, à expérimenter ce que nous vous propose-
rons, puis à y revenir dès lors que le besoin s’en fera sentir.
Considérons l’ordre LIST. Vous pouvez très bien lister une seule ligne, par exemple
la ligne 19 du programme précédent (nous supposons qu’il est toujours en
mémoire) :
LIST 10
19 INPUT N
Vous demandez = —————— — —
la seule ligne 10 …
=. Qui apparait
AUSIOT. , pee En
Vous pourriez demander le listage du programme jusqu’à la ligne 29 incluse, par
exemple, ce qui s’écrirait :
(ioubier pas le tiret
{signe «moins»)
3 PRINT CHR$(12)
5 PRINT "Donnez la vitesse en noeuds:"
19 INPUT N
20 KM=Nx*1.852
Ou encore, vous pourriez souhaiter les lignes à partir de 39 incluse :
LIST 30-
839 PRINT "La vitesse est de “;KM"km/h
85 PRINT
49 GOTO 5
Ready
Dernière formule, enfin, le listage à partir de 5, par exemple, jusqu’à 29 inclus ;
voici :
58
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
MODIFICATION
D'UNE LIGNE
Vous avez amené le
curseur, ICI,
CTRL/A
LIST 5-29
5 PRINT "Donnez la vitesse en noeuds:
19 INPUT N
20 KM=Nx1.852
Supposons maintenant que vous vouliez modifier la ligne 4ÿ et écrire à la place
GOTO 3 (au fait, pouvez-vous deviner quel sera le résultat de cette modification ?).
Vous pourriez refrapper totalement cette ligne (pourquoi pas ?). Mais il existe une
méthode souvent préférable permettant d’apporter des modifications à une ligne
sans avoir à la refrapper. Pour cela, il faut « éditer » cette ligne, ce qui signifie
dans ce jargon très discutable de l’informatique : l’afficher (ou l’imprimer). C’est
là où LIST intervient. Notre programme étant court, listez-le en entier. Puis :
1) — Servez-vous des touches fléchées (autour de la barre d’espacement) pour
emmener le curseur tout au début de la ligne 49. Voici ce que cela donnera (on ne
vous montre que cette seule ligne) :
49 GOTO 5
2) — Servez-vous, maintenant, de la combinaison CTRL/A pour déplacer le cur-
seur vers la droite (maintenez CTRL enfoncée et frappez plusieurs fois sur A).
Avec CTRL/A, le curseur « relit » les caractères qu’il croise et, pour l’ordinateur,
tout se passe comme si vous les refrappiez. Stoppez le curseur sur le 5.
3) — Maintenant, frappez votre correction, donc un 3 au lieu du 5. Vous pourriez
de la même façon effacer des caractères avec DEL ; si d’autres caractères à conser-
ver suivaient, il vous faudrait les « recopier » en promenant dessus le curseur, tou-
jours avec CTRL/A.
Attention : seul CTRL/A relit et « recopie »
en mémoire les caractères sur lesquels il
passe. Cela, en mode « édition ».
4) — Faites RETURN : la nouvelle ligne est enregistrée.
5) — La correction est terminée, mais il reste encore une précaution à prendre :
extrayez le curseur du corps du pores emmenez-le au-dessous avec la touche
marquée d’une flèche verticale (+) car sinon, ce que vous frapperiez à nouveau vien-
drait se conjuguer avec les lignes existantes, donnant un résultat imprévisible. Ou
alors, et plus simplement, effacez l’écran avec CTRL/L.
Vous pouvez maintenant vérifier l’état de la nouvelle ligne 49 modifiée, avec LIST,
ou simplement LIST 4ÿ ; vous obtiendrez :
LIST 49
49 GOTO 3
Que pensez-vous que cela donnera, avec un RUN ? A chaque nouvelle vitesse en
nœuds frappée, l’ordinateur calcule la vitesse correspondante en kilomètres-heure,
l’affiche, puis efface l’écran et repose la même question. Vérifiez-le avec un RUN.
Hélas ! L’affichage du résultat est instantané et l’écran est effacé tellement vite
qu’on n’a même pas le temps de le lire !
LE MODE PROGRAMMÉ 59
TEMPORISATION
WAIT
EDIT
Aussi va-t-on prier l’ordinateur de bien vouloir attendre un instant, avant de
ré-effacer l’écran. Aftendre se dit WAIT, en anglais ; on va faire suivre WAIT
d’une durée, sachant qu’une durée de 1 équivaut à 19 millièmes de secondes ; par
conséquent, pour « temporiser » une seconde, on écrira WAIT 199 (car 199 fois
19 ms = 1 seconde). Introduisez cette instruction en remplacement de la ligne 35,
qui n’a plus d’intérêt de toute façon :
Pour mémoire, voici à quoi ressemble maintenant notre programme complet (vous
l’obtenez, comme de coutume, avec un LIST) :
LIST
3 PRINT CHR$(12)
5 PRINT "Donnez la vitesse en noeuds:"
19 INPUT N
29 KM=Nx1.852
89 PRINT "La vitesse est de ";KM; "km/h
35 WAIT 100
49 GOTO 3
Refaites un RUN : cette fois, l’affichage dure une seconde. Voulez-vous en modi-
fier la durée ? Vous savez comment le faire sans refrapper la ligne, avec un LIST
35, les touches fléchées pour amener le curseur au début de la ligne, CTRL/A pour
l'emmener sur le 1. Frappez alors un 2, par exemple, puis « recopiez » les deux
zéros en frappant encore sur CTRL/A ; le curseur étant « sorti » du texte, faites
RETURN, effacez l’écran, et lancez le programme avec RUN. La temporisation
sera de 2 secondes.
Voulez-vous la porter à 5 ? Il faut frapper 599, mais on va vous indiquer une der-
nière méthode. Faites apparaître la ligne 35 en utilisant, cette fois, un ordre qui
porte bien son nom : EDIT. Ecrivez EDIT 35. Vous constaterez que le curseur reste
alors sagement au début de la ligne 35 qui apparaît :
EDIT 35
85 WAÏIT 209
Vous pouvez emmener alors le curseur avec CTRL/A sur le 2 afin de le modifier en
5, tout comme on l’a fait précédemment, refaire CTRL/A pour « sortir » le cur-
seur, faire RETURN : la modification est terminée et la temporisation a été portée
à cinq secondes. Vérifiez-le avec un RUN.
Avec de la pratique, vous apprendrez à combiner ces diverses possibilités (nous ne
vous en avons d’ailleurs pas tout dit ici), et vous acquerrez les automatismes qui
vous rendront les modifications et corrections simples. Afin d’acquérir cette indis-
pensable pratique, nous allons maintenant vous proposer à la fin de chaque chapi-
tre, des programmes modèles, allant jusqu’aux jeux. N’abordez toutefois ces pro-
grammes qu'après avoir répondu avec succès aux exercices de la page 60.
Entrez les programmes dans votre Oric un seul à la fois..., ils pourraient se gêner,
et essayez-les. Les exemples d’utilisation sont là pour vous guider. Grâce aux
remarques décortiquez le programme et changez une virgule, remodelez à votre
guise.
C’est l’occasion de mettre en pratique les modifications grâce à EDIT et CTRL/A
dont on vient de vous parler.
60 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Vous retrouverez les mots
INPUT PRINT WAIT GOTO
et vous consulterez une portion de la table de codification des caractères grâce à la
fonction CHRS et son complément ASC.
QUESTIONS SUR LE CHAPITRE IV
1. Y a-t-il une erreur dans la séquence suivante ?
2. Pour lancer l’exécution d’un programme, l’ordre est :
RUN
GO
. Un point-virgule placé dans un ordre PRINT :
Commande un retour à la ligne
[] Supprime le retour à la ligne
. Peut-on ré-afficher un programme se trouvant en mémoire ?
Oui, avec l’ordre LIST
[] Non, il faut le refrapper
. Pour supprimer une ligne de programme, il faut :
C] Frapper son numéro, puis faire RETURN
Frapper son numéro, puis faire CTRL/X
. L'ordre NEW sert à :
Relancer l’exécution d’un programme
Effacer la mémoire
. Pour effacer l'écran, il faut faire :
CLS
C] CTRL/L
? CHRS(12)
8. Si le programme doit demander à l’opérateur de nouvelles données, vous devrez intro-
duire une instruction :
ENTER
C] INPUT
. Un organigramme est :
[] La représentation graphique d’un algorithme
C] Le dessin d’un programme
. Pour interrompre un programme en cours d’exécution, vous ferez :
CO] CTRL/C
C] STOP
. Pour créer une temporisation de cinq secondes, vous écrirez :
STOP 5
WAIT 599
. L'ordre EDIT 2ÿ
Supprime la ligne 29
[] L’affiche sur l’écran pour corrections
Réponses page 72
LE MODE PROGRAMMÉ 61
CLS
S-Q
INPUT P
S=S+P
PRINT S
GOTO 38
UNE ADDITION QUI N’EN FINIT PAS
CLS INPUT PRINT GOTO WAIT
La scène se passe à la sortie d’un magasin : un client qui vient de faire
ses achats s’aperçoit qu’il a oublié son carnet de chèques et que son porte-
monnaie risque de ne pas suffire à tout payer.
La caissière tape alors les prix en faisant afficher au fur et à mesure
la somme due, jusqu’à ce que le client lui crie « halte ».
REMARQUES
10 — on efface l’écran
20 — on efface l’ardoise du client
30 à 60 — c’est le serpent qui se mord la queue :
une boucle
Le spectacle suivant se déroule devant les yeux du client inquiet :
Pour arrêter on a
tapé CTRL C
62 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Il faut bien avouer qu’on peut faire mieux comme affichage, en étant
plus bavard : un petit message pour la caissière, un autre pour le client, à
condition de modifier deux lignes.
18 CLS
28 S=0
40 S=S+P
5Q PRINT'SOMME DUE ";S
6Q GOTO 30
PRIX D'UN ARTICLE? 23
SOMME DUE 23
PRIX D’UN ARTICLE? 34
SOMME DUE 52
PRIX D'UN ARTICLE? 56
SOMME DUE 113
PRIX D'UN ARTICLE? 12
SOMME DUE 125
PRIX D'UN ARTICLE®?
Ready
Comment savoir à quel article on en est ? Il suffit de les compter et d’af-
ficher ce numéro.
Mais l'instruction INPUT ne sait écrire que des messages figés. Il faut
donc distinguer l’affichage du message destiné à la caissière précisant le
numéro de l’article et l’introduction du prix :
ID: ELS
28 S=0
25 PRINT"'ARTICLE NO "3N;
30 INPUT P 25 — affichage du message
REMARQUES
48 S=S+P 30 — introduction du prix
50 PRINT"'SOMME DUE ";S
99 N=N+]
6Q GOTO 25
ARTICLE NO 1 ? 8
SOMME DUE 8
ARTICÉE" NO 2,7 4,5
SOMME: QUE 12:35
ARTICLE N0O:°3 7.672.535
SOMME DUE 793,85
ARTICLE NO 4 ? 122
LE MODE PROGRAMMÉ 63
SOMME DUE 291.85
ARTICLE NO 5 ?
Ready
L’écran se remplit vite de phrases et de nombres et si on veut y voir
clair il vaut mieux ne garder que ce qui concerne l’article en cours. On net-
toiera l’écran entre deux articles. Mais attention il faut avoir le temps de
lire la somme avant qu’elle ne s’efface ! L’instruction WAIT réalisera ce délai
ajustable au réflexe humain :
5Q PRINT"'SOMME DUE ";S
55 N=N+1! REMARQUES
56 WAIT200 56 — attente : 2 secondes
57 CES
6@ GOTO 25
57 — effaçage
On a maintenant un écran qui contient seulement deux lignes comme
celles-ci avant de s’effacer :
ARTICLE NO 3 745.58
SOMME DUE 893.5
La numérotation des lignes de ce programme est irrégulière puisqu’il
a été écrit par retouches successives, ce qui est un cas très réaliste.
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
S=0
CES
PRINT S
S=S+1
WAIT 95
GOTO 20
UN CHRONOMÈTRE DIGITAL
CLS PRINT WAIT GOTO
Voici une première forme de programme de chronométrage à la seconde.
On ne peut guère faire plus simple : c’est une application de l’instruction
WAIT.
WAIT 100 provoque une pause d’une seconde, et pourtant nous avons
dû mettre WAIT 95. Pourquoi ? La portion du programme qui est répétée
chaque seconde ne contient pas que cette instruction. L’exécution des lignes
20, 30, 40 et 50 prend au total 5/100 seconde environ.
REMARQUES
10 — point de départ
20 à 60 — boucle répétée chaque seconde
50 — délai : 95/100 seconde
Nous ne reproduisons pas d’exemple d’utilisation : les secondes vont
défiler en haut de l’écran, et vous pourrez vérifier vous-même que le chro-
nométrage est précis à moins d’une seconde par minute. Nous ferons mieux
(plus complet et plus précis) au chapitre VII.
LE MODE PROGRAMMÉ 65
3
CARACTÈRES ET CODES :
LA NORME ASCII
CLS CHR$ ASC PRINT GOTO WAIT
18 C=32
2@ PRINT C;,CHRS$(CC)
38 C=C+1
4Q GOTO 28
PRINT CHR$(12) signifie afficher le caractère dont le code est 12 et
nous venons de voir que ceci avait pour effet d’effacer l’écran et de remettre
le curseur en haut à gauche. Ce code 12 correspond à une norme très répan-
due qui est valable aussi pour les imprimantes et signifie passer à la page
suivante. Il y a ainsi 256 codes auxquels correspondent 256 caractères ou
effets spéciaux. Entre 32 et 127 on retrouve à peu près partout les mêmes
caractères selon la norme de codification ASCII. Ainsi le code de la lettre
A est 65, pour B c’est 66...
Vous trouverez en fin d’ouvrage la table pour les codes 32 à 127. Mais
vous pouvez interroger l’ordinateur pour connaître cette table :
PRINT CHR$(65) vous donnera A,
et à l’inverse PRINT ASC(" A‘) affichera 65.
Affichage d’une partie de la table
On peut écrire par exemple, le programme de consultation à partir du
code 32 (en-dessous les effets spéciaux sont très perturbants) :
REMARQUES
10 — code du premier caractère
20 à 40 — boucle
20 — affichage du code puis du caractère
30 — code suivant. :
66 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Au cours du spectacle, ne soyez pas inquiets pour votre ordinateur ou
votre téléviseur : tout s’arrange à la fin ! Eh oui, cette boucle qui ne devrait
jamais s’arrêter se bloque grâce à une erreur : ?Illegal quantity error in 20 :
on n’a pas le droit de demander le caractère dont le code est 256 (ou plus).
Ouf !
251
252
2353
254
255
256
PILLEGAL QUANTITY ERROR IN 28
Ready
Si vous trouvez que la table défile trop vite, ajoutez une temporisation
à la ligne 35, et pour mieux isoler les différents effets effacez l’écran :
35 WAIT 30
36 CLS
4@ GOTO 28
Entre les codes 32 et 126 on obtient la liste des caractères normaux dis-
ponibles sur l’ORIC, en commençant par l’espace.
Entre 127 et 159, les résultats sont parfois surprenants : certains codes
ont des effets sur la couleur du fond ou de l’encre, d’autres sur la synchro-
nisation de l’image ou encore masquent une partie de l’écran. On obtient
même des hiéroglyphes étranges venus d’ailleurs. Nous aurons l’occasion de
revenir sur ces codes spéciaux.
Si on ne connaît pas le code du premier caractère souhaité
Comment démarrer la consultation à la lettre A, par exemple, si l’on
ne connaît pas le code de cette lettre ? En le faisant calculer par le programme :
20 PRINT CHR$(C),C Ici on écrit
10 — code du premier caractère affiché
30 C=C+1 d'abord le
35 WAIT 30 caractère puis son 20 à 40 — boucle
code
36 CLS 20 — affichage du caractère puis de son code
4Q GOTO 20
Le spectacle change légèrement dans la région 129 à 143 et on observe
l'effet des caractères spéciaux sur leur propre code.
LE MODE PROGRAMMÉ 67
4
L’'INITIALE D'UN MOT
LEFT$ LEN
LEFT$
Certaines fonctions du Basic permettent de se livrer à toutes sortes d’opé-
rations chirurgicales sur les chaînes de caractères. Commençons par l’extrac-
tion de la partie gauche d’un mot ou d’un groupe de mots grâce à la fonc-
tion LEFTS (de l’anglais left : gauche). N'oubliez pas le dollar car le résul-
tat fourni par LEFTS est une chaîne de caractères
LEFTS$(« NON »,2) vaut « NO »
et si C$ vaut « PARISIEN »,
LEFT$(C$,5) vaut « PARIS »
Vous avez compris, le deuxième nombre indique combien de caractères
on souhaite extraire, et on commence par le plus à gauche.
Utilisons cette fonction pour connaître l’initiale d’un mot.
1@ INPUT"TAPER UN MOT"; M$
2Q PRINT'L’INITIALE EST ";LEFTSCNM$,1)
RIGHTS
LEN
Un exemple d’utilisation :
RUN
TAPER UN MOT? 2INC
L'INITIALE EST à
Ready
Pour l'instant l’ordinateur ne nous apporte rien. Ça deviendrait plus
intéressant si l’on avait emmagasiné en mémoire un tas de noms et qu’on
veuille les ressortir par leur initiale. Patience !
L’équivalent de LEFT$ pour la partie droite s’appelle RIGHTS (right
signifie droite en anglais), par exemple :
RIGHTS (« BONJOUR »,4) vaut « JOUR » c’est-à-dire les 4 derniers
caractères.
Si on a besoin de connaître le nombre de caractères d’un mot ou d’un
groupe de mots, c’est la fonction LEN (du mot anglais Length : longueur)
qui va vous renseigner : LEN (« OUI ») vaut 3.
W$="ANTICONSTITUTIONNELLEMENT"
PRINT LENCWS$)
25
68
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
UN TÊTE A QUEUE VERBAL
MIDS
Comment écrire à l’envers : de droite à gauche ? Il suffit de parcourir
le mot ou la phrase caractère par caractère, en commençant par le dernier.
L'affichage se terminera faute de caractère, parce que nous n’avons pas encore
vu comment finir plus joliment ! La fonction à tout faire sur une chaîne de
caractères s’appelle MIDS$ (de l’anglais middle : milieu) et elle permet d’analy-
ser un fragment de chaîne situé n’importe où.
MIDS(’TARABISCOTTE”’,5,3) vaut BIS”?
parce que B est le cinquième caractère de la chaîne de départ et qu’on a pris
trois caractères.
MID$(’TARABISCOTTE”’,5) donne *’BISCOTTE”’ : le nombre de
caractères à extraire n’est pas précisé si MIDS$ va jusqu’au bout. Pour isoler
le caractère numéro P d’une chaîne située dans M$, il suffit d’écrire
MIDS(MS,P,1).
INPUT'TEXTE À INUERSER";T$
C=LENCTS$)
CLS REMARQUES
PRINT MID$(T$;C;,1); 20 — on commence par le dernier caractère
C=C-1
GOTO 48
50 — on régresse
Dans l’exemple suivant :
TEXTE À INUERSER? ARROSOIR
RIOSORRA
PILLEGAL QUANTITY ERROR IN 48
Ready
l'exécution se termine sur le message ?ILLEGAL QUANTITY ERROR au
moment où on cherche à extraire le caractère situé avant le premier (C=0) .
LE MODE PROGRAMMÉ 69
UN COMPTE ROND
STR$ VAL
Grâce aux fonctions LEFT$, RIGHTS, MIDS et LEN, la manipulation
des chaînes de caractères est plus commode que celle des nombres. Mais on
peut l’appliquer aux nombres en utilisant la fonction STR$ qui convertit un
nombre en chaînes de caractères. Pourquoi pas ?!.
STR$(1357) vaut *’1357”” et on pourra toujours faire le trajet inverse
pour retrouve un « vrai » nombre :
STR$ VAL(”’ —-285’’) donne le nombre — 285
Par exemple, si on souhaite arrondir un prix donné en francs, à la dizaine
de francs supérieure, il suffit de changer le chiffre de droite pour un zéro
VAL et d'augmenter de 1 son voisin (le chiffre des dizaines).
On peut écrire une première version du programme.
CLS
INPUT'NOMBRE À ARRONDIR" ;N
PRINT SPC(22) ; "CHIFFRES"
PRINT SPC(13);"DE DROITE DI2AINE UNIT
N$=STRSCN)
LELENCNS ) REMARQUES
U$=RIGHTS$SCNS, 1)
D$=MID$SCN$,L-1,1)
N$=LEFT$SCN$S,L-2)
PRINT"'AU DEPART :" 70 — le chiffre des unités
PRINT SPCC16) ;N$, ,D$, , US$ RES Te
R=INTCUALCUS)/5)
D$=CHRS$CASC(D+)+R)
PRINT"'RETENUE SUR LES DIZAINES "5R
PRINT SPCCIG6)J;N$,,D$,,US$
U$="2" 190 — reconstruction du nombre complet (toujours
sous forme de chaîne de caractères)
PRINT"'REMISE À ZERO DE L’UNITE"
PRINT SPCCI16);N$,,D$,,US$
N$=N$+D$+U$
PRINT"'CE QUI DONNE : ";N$
20 — introduction du nombre à arrondir
50 — conversion en chaîne de caractères
90 — les autres
120 — la retenue qu’il faut ajouter au chiffre des
dizaines (0 ou 1)
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Exemple :
NOMBRE À ARRONDIR? 1234
CHIFFRES
DE DROITE DIZAINE UNITE
AU DEPART
12 3 4
RETENUE SUR LES DIZAINES 1!
12 q 4
REMISE À ZERO DE L’UNITE
12 q )
CE QUI DONNE : 1240
Ready
Si on désire arrondir à la dizaine la plus proche, il faut modifier la ligne 120 :
18 CLS
2@ INPUT'"NOMBRE À ARRONDIR'" ;N
30 PRINT SPC(22) ; "CHIFFRES"
40 PRINT SPC(13);"DE DROITE DIZAINE UNIT
E"
50 N$=STR$CN)
69 L=LENCNS)
78 U$=RIGHTS$SCNS, 1)
80 D$=MID$SCN$;L-1,1)
30 N$=LEFTS$SCN$,L-2)
108 PRINT'"AU DEPART :"
119 PRINT SPCC16);N$, ,D$, , US$
12@ R=INTCUALCUS)/5)
138 D$=CHR$CASCCD$)+R)
si le chiffre des unités est inférieur à 5 la retenue R vaudra 0 sinon ce sera 1.
NOMBRE À ARRONDIR? 1234
CHIFFRES
DE DROITE DIZAINE UNITE
AU DEPART
12 3 4
RETENUE SUR LES DIZAINES @
12 3 4
REMISE ‘A :2ER0: DE L?UNITE
12 3
CE QUI DONNE : 1238
LE MODE PROGRAMMÉ 71
NOMBRE À ARRONDIR? 1236
CHIFFRES
DE DROITE DIZAINE UNITE
AU DEPART
12 3 6
RETENUE SUR LES DIZAINES 1!
12 4 6
REMISE ‘À ZERO DE. L’'UNITE
12 4 0
CE QUI DONNE : 1249
Re ady
On retrouvera ces manipulations de chaînes de caractères ainsi que les
instructions INPUT WRITE GOTO dans les chapitres suivants, Mais l’ac-
cent sera mis sur les instructions nouvelles.
72 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
REPONSES AUX QUESTIONS SUR LE CHAPITRE IV
1. Non, il n’y a pas d’erreur, ici. Vous pouvez attribuer aux lignes n’importe quel
numéro : respectez seulement un ordre croissant.
2. L’exécution d’un programme est commandée par RUN. L'ordre GO n'existe
pas, tel, de toute façon (sauf sous des formes telles que GOTO).
3. Le point-virgule, dans un ordre PRINT, supprime le retour à la ligne. L’affi-
chage se poursuivra sur la même ligne.
4. Oui, l’ordre LIST ré-affiche le programme en mémoire.
5. Pour supprimer une ligne de programme, il faut frapper son numéro puis
RETURN. Rappelez-vous que CTRL/X sert à abandonner ce qu’on vient de frap-
per ; la machine n’en tiendra pas compte ; par conséquent, il n’y aurait pas sup-
pression.
4. NEW sert à effacer la mémoire (vive, centrale), qui contient le programme, les
données et les résultats.
7. Ces trois ordres effacent l’écran : à vous de choisir celui que vous préférez !
Rappelez-vous que la frappe de CTRL/L ne peut se faire qu’en mode direct. Par
contre, CLS et ? CHRS$(12) peuvent intervenir en mode direct ou en mode pro-
grammé. On préfèrera CLS, tout simplement parce que c’est plus court à frapper et
plus évident (si vous vous souvenez de sa signification anglaise : « Clear Screen »,
soit « effacer l’écran »).
8. C’est INPUT qui sert à introduire de nouvelles données en cours de l’exécution
d’un programme (on a inventé, ici, le mot ENTER pour les besoins de la question).
9. Ici, on a répété deux fois la même chose, d’abord de façon « savante », puis très
simplement. En effet, un « algorithme » est la « logique » du programme, la façon
dont il est organisé pour atteindre le résultat voulu. Et « représentation graphi-
que » ou « dessin » sont très synonymes.
19. Pour interrompre un programme, il faut faire CTRL/C.
11. Vous créerez une temporisation de cinq secondes avec WAIT 599.
12. L'ordre EDIT 29 affiche la ligne 29 sur l’écran afin que vous puissiez la corri-
ger.
CHAPITRE V
COULEURS ET SONS PROGRAMMÉS
On va enfin vous présenter la gamme des couleurs de l’Oric— 1. Avec, de plus, les
sons programmés, au nombre de quatre : une clochette, un tir d’arme galactique à
laser (eh oui !), un coup de feu et une explosion. Pour les créer, il nous faut vous
initier aux boucles du type FOR... TO et aux nombres aléatoires. Mais votre peine
va aussitôt trouver sa récompense, croyez-le.
Principaux thèmes étudiés
Boucles
FOR... TO
NEXT
Organigramme de
boucle FOR... TO
Instructions multiples
Double-point
Pas dans FOR... TO
STEP
Décomptage avec FOR... TO
Couleurs
PAPER
INK
Remarques
REM
Défilé des couleurs
Emboîtage des boucles
Règles avec les boucles
Sons
CTRL/G
PING
ZAP
SHOOT
EXPLODE
Nombres aléatoires
RND
Notation scientifique
Entiers
INT
Bataille galactique
RND(@)
RND(- N)
BOUCLES
FOR... TO
NEXT
1. Boucles avec les ordres FOR... NEXT
On a vu, dans le chapitre précédent, que l’ordre GOTO pouvait commander un
« bouclage ». L’ordre FOR... NEXT permet également la création de boucles,
mais avec deux différences essentielles :
1) — Voici le principal : vous contrôlez le nombre de boucles à effectuer, puisque
FOR... TO en a fixé les limites.
2) — Puis, mais c’est le moins important pour notre action, cette instruction se
compose en réalité de deux ordres distincts. L’un est FOR... TO ce qui signifie
« pour... jusqu’à » et sert à fixer des limites, le second est NEXT (« au
suivant ! »), qui renvoie à la valeur suivante. Il faudra donc deux lignes.
C’est facile à vérifier avec ce court programme qui va afficher les trois chiffres 1, 2
et 3. Entrez-le en machine et exécutez-le pour voir ce que cela donne ; on vous
l’expliquera aussitôt après ; on a fait suivre l’exécution, ici :
74
ORGANIGRAMME
DE LA BOUCLE
FOR... TO
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
ON BON
CC 2666
C'est fini!
Que s’est-il passé ? A la ligne 19, on a fixé les limites de N, qui pourra aller de 1 à 3,
en commençant par 1.
Le comptage se fait par unités successives :
1, puis 2, puis 3... A moins qu’on n’ajoute
des ordres contraires, comme on va le voir
plus loin.
Puis, en 29, on commande l’affichage de N, donc de 1 au premier tour. Le pro-
gramme rencontre alors la ligne 39 qui lui demande le N suivant ; il se branche alors
à nouveau en 19 et, s’apercevant que la valeur 1 a déjà été utilisée, prend la 2 et
l’attribue à N. En 24, il affiche 2, Puis passe en 39 qui renvoie en 19 où N prend la
valeur 3. Celle-ci est affichée à son tour, puis 39 renvoie encore en 19 mais là, le
programme s’aperçoit que toutes les valeurs possibles ont été utilisées. Par consé-
quent, il saute toute la chaîne et poursuit à l’instruction suivante qui est la 49 ; il
affiche alors « C’est fini ! ».
Lorsque toutes les valeurs permises ont été
utilisées, le programme passe à l'instruction
qui suit la ligne NEXT.
On peut illustrer ce processus à l’aide de l’organigramme ci-contre.
Remarquez le losange de l’organigramme : il pose une question, contenue implici-
tement dans l’ordre FOR... TO : /a valeur finale est-elle dépassée ? si non, on bou-
cle ; si oui, on passe à l’instruction suivante. On emploie donc deux sommets de ce
losange, selon que la réponse est NON ou OUI. Chaque fois qu’on posera une
question, on l’insérera dans un losange.
L’instruction de traitement contenue dans la boucle peut fort bien faire appel à
autre chose que la variable contenue dans la boucle FOR... TO ; modifiez simple-
ment le programme précédent à la ligne 29 pour obtenir :
19 FOR N=1 TO 3
29 ?7"OUI,';
39 NEXT N
49 ? "C'est fini!"
RUN
OUI,OUI,OUI, C'est fini!
COULEURS ET SONS PROGRAMMÉS 75
Initialisation de la boucle :
on fixe les valeurs limites
de. à soit FOR... TO de la Ligne 19
variable (N, ici)
Instruction de traitement :
ici, l’affichage de N Ligne 20
Valeur suivante de N Ligne 30
Boucle
FOR … TO Question
implicite
de FOR .… TO
Dépasse-t-on la
valeur finale ?
Affichage final de
W C'est fini ! ”
Ligne 49
Organigramme de la
boucle FOR... TO
Comment faire pour écrire C’est fini ! sur la ligne suivante ? Réfléchissez un ins-
tant : il faut annuler l’effet du point virgule prédécent, de la ligne 29, mais seule-
ment lorsqu’on sort de la boucle. Qu’à cela ne tienne : on va placer un PRINT rien
du tout, sans point-virgule final, lui ; on obtiendra cet affichage sur /a même ligne
que les OUI,OUI,OUI, mais il provoquera un retour à la ligne pour l’affichage
final. Cela donne, en récapitulant :
Ajouter cette )
instruction …
TT
Nous avons mis
PRINT en toutes
lettres en supposant
que vous avez fait
un LIST
19 FOR N=1 TO 3
29 PRINT "OUI,"
39 NEXT
35 PRINT
40 PRINT "C'est fini!"
RUN
OUI,OUI,OUI,
C'est fini!
… Et l'affichage final
se fera sur la ligne
suivante
Et comment pourriez-vous faire pour séparer d’une ligne vide les « OUI,OUL,OUI »,
de « C’est fini ! » ? On nous l’a déjà dit dans le chapitre précédent, rappelez-
vous : placez un autre PRINT :
76 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Ce PRINT
commande …
19 FOR N=1
20 PRINT ‘
30 NEXT N
35 PRINT
36 PRINT
49 PRINT "C'est fini!"
RUN . Ce saut de
OUI,OUI, OUI, ligne
C'est fini!
Mais pourquoi employer deux lignes, 35 et 36, qui ne comprennent pas grand chose
chacune ? Ne pourrait-on les regrouper ? Oui, le Basic accepte qu’on place plu-
sieurs instructions sur une unique ligne (avec un unique numéro).
Pour séparer des instructions sur une ligne,
on place un double-point (:). C’est le
« séparateur » officiel.
INSTRUCTIONS
MULTIPLES
DOUBLE-POINT
Aussi, on peut ré-écrire encore ainsi le programme précédent, en cumulant même
3 lignes. Commencez par supprimer 35 et 36, puis refrappez ainsi la ligne 49.
Ne vous égarez pas
dans tous ces :
?
3 instructions
sur une seule
ligne
Les : servent de
séparateurs
49 77:27:77 "C'est fini!”
N
Tr TOUT:
T:PRINT:PRINT "C'est fini!”
Le RUN, bien entendu, procurerait le même résultat que ci-dessus.
PAS DANS FOR... TO
STEP
2. Boucles FOR... TO avec un pas
On a vu que la boucle FOR... TO « incrémentait » la variable d’un pas positif uni-
taire : la variable N passait successivement à 1, puis 2, puis 3. Or, on peut lui impo-
ser un pas différent, par exemple un demi, ce qui s’écrit 9,5 en français courant.
COULEURS ET SONS PROGRAMMÉS 77
Or, rappelez-vous que le Basic, d’origine
anglaise, place un « point » décimal là où
nous mettons une « virgule » décimale. Donc,
au lieu d’écrire 9,5 on écrira 9.5.
Bien mieux, le Basic estime que le 9 avant
le point est encore superflu. On peut donc
se contenter d’écrire .5.
Si vous placez cependant un 9, cela ne constitue pas une faute.
Avez-vous conservé en mémoire le programme précédent ? Si oui, commencez par
modifier la ligne 19 pour obtenir :
19 FOR N=1 TO 3 STEP .5
Pour apporter cette correction, on va employer EDIT. Faites successivement.
e EDIT 19, puis RETURN. La ligne 19 apparaît sur l’écran.
e Avec CTRL/A, amener le curseur après le 3 de ’’ FOR N=1 TO 3”’.
e Frappez alors STEP .5, puis RETURN.
La correction est achevée. Modifiez alors les lignes 29 et 49 pour obtenir :
19
20
30
49
RUN |
1 Voici le
1e résultat
2.5
3
C'est fini!
Vous pourriez choisir un pas absolument quelconque, par exemple de 2. Modifiez à
nouveau la ligne 19 ainsi, et lancez le programme ; cela donnera :
19 FOR N=1 TO STEP 2
29 PRINT N
89 NEXT N
49 PRINT "C'est fini!”
On a compté
1 DR |
3 |
C'est finil!
78 PRATIQUE DE L'’ORIC 1 ET 36 PROGRAMMES
Le pas peut être négatif, si l’on veut décompter, mais il faudra alors aller de 3 à 1 et
non plus de 1 à 3 ; il suffit, à nouveau, de ne modifier que la seule ligne 19 :
DECOMPTAGE
AVEC FOR... TO
Veillez à bien
écrire : de 3
à 1
9 FOR N=3 TO 1 STEP
9 PRINT N
9 NEXT N
9 PRINT "C'est fini!”
U
Vous pouvez combiner tout ceci à volonté, pas quelconques, positifs ou négatifs.
Faites quelques expériences par vous même, pour bien « vivre » cet ordre.
3. Avec 8 couleurs
Votre Oric — 1 dispose de 8 couleurs, le blanc et le noir compris. Chaque couleur se
voit affecter un numéro et c’est par ce numéro qu’on l’appellera. Il s’agit de :
COULEURS
COULEUR NUMERO
0
1
2
3
4
5
6
7
Vous pouvez mettre en couleur la « page de texte », l’équivalent de la feuille qui
apparaît sur l’écran et s’appelle en langage Oric « PAPER », ou le texte lui-même :
PAPER INK (pour encre).
Commencez par mettre la page en rouge. Faites :
Avec RETURN, la «page»
va passer au rouge
Jaune
Bleu
Magenta
C'est un
bleu-vert
PAPER 1
Avec RETURN,
le texte se met en vert
REMARQUES
COULEURS ET SONS PROGRAMMÉS 79
Ne soyez pas trop exigeant avec votre
téléviseur couleur : les couleurs pourront
« baver » un peu, ou ne pas être rigoureusement
celles annoncées. Après tout, qu'importe si
le résultat reste intéressant ? Nul n’est
parfait, encore moins les réglages de votre
téléviseur.
Voici, maintenant, un petit programme destiné à faire défiler les 8 couleurs, cha-
cune restant affichée une seconde, en « page ». Rappelez-vous que lorsque l’encre
et la page sont de la même couleur, l’affichage se perd, devient invisible. Ce pro-
gramme emploie une boucle FOR... TO. En outre, on lui a ajouté un titre, sous
forme de remarque.
L'ordre REM, pour « remarque », sert à
placer des explications pour celui qui lit
le programme, et uniquement pour lui.
Lorsque le Basic rencontre l’ordre REM , il
saute tout ce qui suit et passe à la ligne
suivante.
Voici ce programme :
C'est une «REMarque» ; elle ne joue aucun rôle
0 REM Defile des couleurs |
0 FOR P=9 TO 7 La variable P va
9 PAPER P prendre toutes les
1)
)
valeurs, de O0 à
7
WAIT 100
NEXT P
? "C'est
O O1 BR © N =
fini!”
Pour laisser la couleur
affichée pendant
Faites un RUN : les 8 couleurs vont se succéder. Si vous voulez que le processus
continue, remplacez 69 par :
La boucle sera bouclée à perpétuité, ou jusqu’à un CTRL/C.
Compliquons le jeu en faisant varier la couleur de la feuille (PAPER) mais aussi
celle du texte (INK), à l’aide de deux boucles, cette fois : une boucle P pour
PAPER, et une boucle I pour INK. Le principe est le suivant : on affiche une page
d’une couleur donnée, puis on fait défiler les couleurs du texte ; lorsqu’elles sont
toutes passées, on change la couleur de la page et on recommence ; etc. Etudiez
bien ce programme pour comprendre le fonctionnement de ces deux boucles, car
c’est très important ; c’est le seul concept nouveau que nous voulons d’ailleurs vous
présenter ici.
80 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Plus exactement, le processus sera le suivant ;
e La page passe en noir (9)
— le texte passe en noir (@)
— En rouge (1)
— En vert (2)
— En jaune (3)
— En bleu (4)
— En magenta (5)
— En cyan (6)
— En blanc (7)
On a là une
sorte de «petite»
boucle interne …
Et par
opposition, une
«grande» boucle
externe
e La page passe en rouge (1)
— Le texte passe en noir @
— En rouge (1)
Ici, répétition de la
«petite» boucle interne
.… Etc. !
(Grandes boucle : Le programme est ainsi :
PAPER
V RÉ
19 REM Defile des couleurs
209 FOR P=9 TO 7
30 FOR 1=0 TO 7
49 PAPER P
50 INK |
69 WAIT 109 Tiens,
79 NEXT I pourquoi ?
80 NEXT P
90 INK 9
199 ? "C'est fini!"
Lancez ce programme : vous verrez se succéder les pages de couleurs, puis, et pour
chaque page, les textes en couleurs. A la fin, en ligne 99, on a placé un INK 6,
pouvez-vous deviner pourquoi ? La dernière « image » couleur de ce programme
donne INK 7 et PAPER 7, donc du texte blanc sur fond blanc ! Vous ne lirez pas
grand chose. Aussi a-t-on rétabli l’encre en noir (9).
Notez ce point capital : les deux boucles sont
« emboîtées », la « petite » est intégralement
contenue dans la « grande », ce que l’on a
marqué sur le listage du programme.
L’organigramme du programme (ci-contre) montre bien, lui aussi, la présence de
ces deux boucles.
EMBOITAGE A ne jamais
oublier
DES BOUCLES
Deux boucles (deux, ou davantage) doivent
être soit totalement emboîtées (contenues
l’une dans l’autre), soit totalement distinctes.
On peut illustrer cela ainsi :
Grande
boucle
Organigramme de la
double boucle de couleurs
COULEURS ET SONS PROGRAMMÉS
Titre sous forme de remarque
Limites des couleurs de page : toutes (9 à 7)
Limites des couleurs de texte (INK) : les mêmes
Commande de mise en couleur du papier
Commande de mise en couleur du texte
Temporisation
Petite
boucle
A-t-on fait défiler toutes
les couleurs pour le
texte ?
(Alors à la suivante)
A-t-on fait défiler toutes
les couleurs pour la
(Alors à la suivante)
Affichage final
81
82
REGLES AVEC
LES BOUCLES
CTRL/G
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Boucles
emboîtées
Lu
Pas de chevauchement, SVP !
Boucles
distinctes [ | >
Cela signifie encore que, si on ouvre la boucle À, puis on démarre la boucle B, i/
faut refermer d’abord B (avec un NEXT B) puis après seulement A (avec un NEXT
A). Sinon, vous commetteriez cette erreur typique des débutants,
Revoyez le programme ci-dessus : on a ouvert (FOR... TO) la boucle P, puis I,
mais on a refermé d’abord I (avec le NEXT de la ligne 79) puis P (avec le NEXT de
89). Il n’aurait pas fallu faire l’inverse : attention à ce type d’erreur !
Nous supposons que vous multipliez
maintenant les essais. Si vous sentez que vous
perdez la maîtrise de l’Oric, qu’il « ne veut
plus vous obéir », c’est que vous avez
commis une erreur quelque part, ou une
fausse manipulation. Dans ce cas, n’hésitez
pas à faire un « RESET ».
Pour cela, retournez l’Oric — 1 et insérez la pointe d’un crayon dans la grande fenê-
tre qui apparaît en-dessous. Pressez le poussoir (que vous ne distinguerez pas :
dommage !). Vous provoquez ainsi ce redémarrage qu’on appelle le RESET
(« remise en condition de départ »). Il laisse intact le contenu des mémoires centra-
les. On l’appelle encore un redémarrage à chaud.
N'oubliez pas, non plus, de faire NEW pour effacer la mémoire lorsque vous
redoutez qu’un nouveau programme n'’interfère fâcheusement avec un ancien.
4. Des sons aussi
Votre Oric dispose de la couleur (on vient de le voir), sait dessiner (patience :
d’autres chapitres suivent !), et produit des sons ou même de la musique. On va
examiner ici les sons, laissant la musique à un prochain chapitre.
Vous avez d’abord remarqué que CTRL/G produisait un tintement de clochette.
Vous obtiendrez le même effet, dans un programme, en écrivant PING. Essayez,
en mode direct :
ue se (Puis RETURN ) — —— sf ——
PING
Chaque touche est, en outre, sonorisée. Vous pouvez supprimer ce son en faisant
CTRL/F, ou le rétablir avec la même combinaison (vérifiez-le).
COULEURS ET SONS PROGRAMMÉS 83
Mais voici mieux :
e L’ordre ZAP produit un sifflement décroissant sensé imiter une arme galactique
à laser. C’est une simple question d’imagination !
e L’ordre SHOOT simule le bruit d’uh coup de fusil.
e Enfin, EXPLODE, comme son nom l’indique, simule une explosion.
SHOOT
Expérimentez ces ordres en mode direct, puis organisez une fusillade galactique
EXPLODE avec la séquence suivante :
Pour 10 tirs
19 FOR N=1 TO 19
z ; Le . : C'est le son de l'arme
20 NEXT N galactique
Avec le RUN, vous entendrez dix tirs galactiques, très réguliers. Trop, même : il
faudrait qu’ils surviennent un peu à l’improviste, au hasard ; mais ça aussi, votre
ordinateur sait le faire.
5. Nombres au hasard et bataille galactique
Une fonction spéciale du Basic sert à tirer des nombres au hasard, c’est RND ; ces
lettres proviennent du mot anglais « random », soit aléatoire, au hasard. L’ordre
NOMBRES ALEATOIRES RND demande à être suivi par un nombre absolument quelconque mais placé entre
parenthèses ; le Basic a, parfois, de telles fantaisies. Ne mettez ni zéro, ni nombre
négatif, et par paresse, utilisez le 9 qui se trouve situé sur la même touche que
l’ouverture des parenthèses. Essayez simplement en mode direct :
Ordre de tirage et d'affichage
d’un nombre aléatoire
L'auteur a obtenu cette valeur
bizarre, un peu inférieure à 1. Vous tirerez
peut-être une autre valeur
Créons un court programme pour afficher plusieurs valeurs aléatoires. Voici ce
programme, suivi d’un RUN :
nr Pour dix
valeurs aléatoires
19 FOR N=1 TO 19
29 ? RND(9)
30 NEXT N
RUN
.103117626
HU Voice ue ot
.551834438 a obtenu
.617419111
.960296981
.547150891
.802192734
.814107273
.131137465
84
NOTATION
SCIENTIFIQUE
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Il est possible que vous obteniez les mêmes valeurs ; en tous cas et à chaque remise
en service de l’Oric — 1, vous retrouverez la même série.
En effet, ces valeurs sont appelées
« aléatoires » mais elles sont en réalité
« pseudo-aléatoires ». Elles appartiennent à
une très grande série répétitive de nombres,
toujours inférieurs à 1.
Parfois même, vous obtiendrez des nombres tellement petits qu’ils seront affichés
en notation scientifique. Ce type de notation utilise les puissances ; si vous les avez
étudiées, cela ne vous déconcertera pas. Ainsi, rappelez-vous qu’un 1 suivi de
douze zéros (soit 1909000000009) peut s’écrire aussi 19!2 en écriture courante. De
même, un millionnième (9,999991) peut s’écrire 19-6. En informatique, on écrira :
1E +12 pour 10!2
1E — 96 pour 19-6
La lettre E représente la « base » 19 ; le cœfficient qui suit, avec son signe, est
l’exposant. Avant le E peuvent se trouver d’autres chiffres, avec le signe plus ou
moins.
C’est ce mode d’écriture qu’on appelle donc la notation scientifique ; ne vous lais-
sez pas démonter par elle et, à la rigueur, ignorez les valeurs aléatoires en notation
scientifique !
Mais revenons à nos tirages : les nombres sont bien petits, et il va falloir les multi-
plier sérieusement pour obtenir des valeurs supérieures.
D'’abord, notez que les tirages sont compris
entre # (qui peut être tiré) et 1 (mais le 1 ne
sera jamais tiré : on ira jusqu’à
9.999999999...).
Si l’on veut obtenir des valeurs comprises entre Ÿ et 15, par exemple, il faudra mul-
tiplier les nombres tirés par 15. Modifiez la ligne 29 du programme précédent pour
introduire la multiplication par 15, et relancez-le. Vous souvenez-vous comment
l’on procède pour modifier une ligne ? Utilisez LIST, ou LIST 29, ou EDIT 29 au
choix. Cela donnera :
19 FOR N=1 TO 19
29 PRINT RND(9)*x15
30 NEXT N
RUN
7.5769316
en ess Valeurs obtenues
1.90229746 par l'auteur
8.08945929
12.0876921
9.32972512
13.1995662
4.19004824
14.9729614
ENTIERS
INT
BATAILLE
GALACTIQUE
COULEURS ET SONS PROGRAMMÉS 85
Remarquez qu’en multipliant par 15 des
valeurs comprises entre 9 (inclus) et
1 (exclu), on peut obtenir toutes les valeurs
entre Ÿ (inclus) et 15 (exclu), donc 14,9999...
Ces nombres décimaux sont encore très embarassants. On va éliminer la partie
décimale (à droite de la virgule, pardon : du point décimal) en réclamant au Basic
la seule partie entière de ces nombres. Sachant qu’entier se dit « integer » en
anglais, vous comprendrez pourquoi l’ordre se code INT.
Vérifiez le fonctionnement de INT en mode direct ; il exige que le nombre soit mis
entre parenthèses à sa suite. Par exemple, faites :
L'’entier de 123, 456,
est bien 123
? INT(123.456)
123
En passant, notez une singularité de l’ordre INT : il n’arrondit pas et fournit tou-
jours la valeur entière immédiatement inférieure. Par exemple (vérifiez-le) :
L'entier (immédiatement
D D nm rt inférieur) de 7,89 est
? INT(7.89) bien 7
7
Ready
? INT(-7.89)
… Mais celui de - 7,89
Refermons cette parenthèse pour en ouvrir d’autres, à la ligne 29 et comme
annoncé. Modifiez cette ligne de façon que le programme soit le suivant, puis
lancez-le : mm,
Attention aux parenthèses : il
faut toujours en refermer autant
qu'on en a ouverts !
19 FOR N=1 TO 19
20 PRINT INT(RND(9)*x15)
30 NEXT N
RUN
9
19
8
7 L'auteur a
\ obtenu ces
À belles valeurs entières,
1 cette fois
14
13
Enfin, nous disposons de valeurs faciles à comprendre et à exploiter : on va les
introduire dans notre guerre galactique pour espacer au hasard les tirs. Ce nouveau
programme résulte de l’introduction d’un tirage aléatoire entre 9 et 15 dans
l’ex-ordre 39 de temporisation du programme galactique précédent. Voici ce que
cela donne : à
86
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
19 FOR N=1 TO 19
29 ZAP
30 WAIT INT(RND(9)*x15)
49 NEXT N
C’est déjà plus réaliste. N’hésitez pas à varier la temporisation en multipliant par
199 au lieu de 15, dans la ligne 29, par exemple, ou par d’autres valeurs.
Sachez cependant encore deux choses, à propos de l’ordre RND :
e Si vous faites RND(9), le Basic vous renverra le dernier nombre aléatoire tiré, et
non un nouveau.
e Si vous utilisez un nombre négatif, par exemple RND(-—9), vous recevrez une
valeur, fixe, et liée au nombre négatif, qui détermine le point de départ de la série.
Ainsi pourriez-vous la modifier à chaque lancement.
Ainsi, avec RND(—9), l’auteur a toujours obtenu (en notation scientifique, remar-
quez) 3.3647666E — 8. D’autres valeurs négatives fournissent d’autres nombres.
Nous nous en serions voulu de ne pas vous l’avoir précisé !
COULEURS ET SONS PROGRAMMÉS 87
QUESTIONS SUR LE CHAPITRE V
N'hésitez pas, dès maintenant, à imaginer par vous-même des courtes séquences de
programmes. C’est, de loin, le meilleur exercice. Mais voyons, au préalable, si vous
répondrez facilement à ces quelques questions fondamentales.
Y a-t-il ou n'y a-t-il pas d'erreur dans les lignes suivantes, extraites de
leur contexte ?
. FOR N=1 TO N=23
. FOR N=37 TO 73
. FOR N=37 TO 73 STEP 25
. FOR N=37 TO 73 STEP 14
. FOR N=37 TO 73 STEP .91
. FOR N=37 TO 73 STEP —25
. FOR N=37 TO 9 STEP -.1
. FOR N=1 TO 3:?N: NEXT N
. FOR N=T+2TOT+5:7T: NEXTT
Bon ! Si vous vous en êtes bien sorti, bravo. Continuons, alors :
10. L’ordre PAPER 3 commande :
CO Le passage en jaune (couleur 3, c’est vrai !) de la page
CO Le passage en jaune du texte
11. L'ordre INK = 1 commande
[] Le passage en rouge (couleur 1, c’est vrai aussi !) de la page
O Le passage en rouge du texte
12. La réponse de l’ordinateur à une instruction 99 REM 4 *4 sera :
O1 16
[1 Rien du tout !
13. L’ordre RND sert à
CO Fournir une valeur aléatoire
C Rendre (« RND ») des couleurs ou des sons
14. Pour la machine, RND(9) et RND(18) sont-ils équivalents ?
O Oui
CO Non
Et pour terminer, une question très difficile :
15. Vous voulez simuler un jet de dé, donc obtenir toutes les valeurs comprises entre ÿ
(inclus) et 6 (inclus). Quel ordre appliquerez-vous :
[1 ? RND(6)
O ? INT(RND(9) *6) + 1
Réponses page 88
88 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
COMPTE À REBOURS
FOR NEXT PING
Dans les jeux chronométrés, il est souvent plus utile de savoir le temps
qu'il reste à jouer. Il n’y a qu’à décompter, par exemple à partir de 60 jusqu’à
zéro, en Ôtant 1 chaque seconde :
FOR S=60 TO 1 STEP -Ii
CLS
PRINT S REMARQUES
WAIT 95 40 — pause pour battre la seconde
NEXT S 70 — le gong !
PRINT S
PING
REPONSES AUX QUESTIONS SUR LE CHAPITRE V
1. Non, ça ne va pas ! Le nom de la variable ne doit être écrit qu’une seule fois. Il
fallait écrire :
FOR N=1 TO 23
2. Cette ligne est parfaitement correcte.
3. Celle-ci aussi.
4. Oui, celle-ci aussi : le pas est très grand, aussi n’y a-t-il que le 37 qui sera pris en
compte car, au tour suivant, on passerait à 137 ce qui excède la limite de 73.
5. C’est parfaitement correct : le pas peut être tout petit.
6. Alors là, rien ne va plus : essayez donc de décompter (— 25) en accroissant des
valeurs de 37 à 73 !
7. Ici, tout va bien car, avec le pas négatif, on a inscrit un décomptage de 37 à zéro.
8. C‘est parfaitement correct. Rappelez-vous que le double point est un séparateur
d’ordres sur une même ligne.
La suite des réponses page 96
COULEURS ET SONS PROGRAMMÉS 89
DE ZÉRO À 99
FOR NEXT
CLS
FOR D=@ TO 3
FOR U=8 TO 3
PRINT U+1@XD;
NEXT LU
PRINT
NEXT D
Dresser le tableau des nombres de 0 à 99 en les groupant par 10 sur cha-
que ligne : 0 à 9 sur la première, 10 à 19 sur la deuxième... Pour cela on
peut distinguer le chiffre des unités et celui des dizaines.
Pour chaque dizaine, il faudra donner au chiffre des unités toutes les
valeurs de 0 à 9 et les afficher sur la même ligne. Puis on passera à la ligne
et on répètera ceci pour que le chiffre des dizaines aille lui aussi de 0 à 9 :
REMARQUES
20 à 70 — boucle sur les dizaines
30 à 50 — boucle sur les unités
60 — à la ligne !
Lancez ce programme et vous obtiendrez :
90 PRATIQUE DE L’'ORIC 1 ET 36 PROGRAMMES
LE HASARD CET INCONNU
FOR RND INT
Pour vous permettre de bien exploiter la fonction RND qui fournit dans
certains cas un nombre à peu près imprévisible, nous vous proposons ici quel-
ques petites expériences sans danger, tant que vous n’engagez pas de pari !
D'abord un galop d’essai : tirage de 10 nombres grâce à RND(1) :
19 FOR N=1 TO 18
28 PRINT RND(CI)
30 NEXT N
si vous utilisez ce programme plusieurs fois de suite, vous obtiendrez cha-
que fois 10 valeurs différentes :
.973136996
. 1203117626
.01/77148333
. 2929343355
.391834438
.617419111I
. 3602369381
.547150891
. 8902192734
.814127273
Après chaque utilisation du programme, tapez en mode immédiat :
PRINT RND(G)
8141087273
vous devez obtenir la dernière valeur fournie par le programme. Ça peut servir
si on a besoin de cette valeur et qu’on ne l’a pas mise en conserve.
Et RND(- 1), par exemple ? Pendant la période de mise au point d’un
programme, on est amené à changer une ligne par ci, une valeur par là. Si
en plus le programme produit des valeurs aléatoires qui changent d’un essai
au suivant, on ne peut plus rien contrôler. Avec une valeur négative dans
sa parenthèse, la fonction RND fixe le point de départ d’une suite de valeurs
obtenues avec RND (nombre positif).
COULEURS ET SONS PROGRAMMÉS 91
19 PRINT"'AMORCE ";RNDC-1)
2@ FOR N=1 TO 10
30 PRINT RND(1)
49 NEXT N
deux utilisations successives de ce programme fournissant la même suite de
10 valeurs, avec en-tête l’amorce.
RUN
AMORCE 2,99196472E-08
. 2382075002
. 2272707136
. 2939733446
. 54034268
. 8784887655
.0@517244711
. 06646660AS
. 8936393669
.92182/414
. 33553650?
RUN
AMORCE 2.99196472E-08
. 2382087502
. 2727807136
. 233/33446
. 24034268
. 8784887765
.@517244211
. 2066466605
. 8336393669
.92182/414
. 3353536507
En changeant la valeur négative on change l’amorce, donc la suite de
valeurs.
RUN
AMORCE 2.939205567E-08
. 2273385388
. 6219366945
. 3693081192
. 3008018338
. 3722401276
92 PRATIQUE DE L'’ORIC 1 ET 36 PROGRAMMES
. 2048888672
. 3271833163
. 4342293892
. 3022435673
, 4581352464
Par contre si l’on change la valeur positive à la ligne 30, on ne change
pas de suite.
RUN
AMORCE 2.9389205567E-08
. 2723385388
. 6219669435
. 3698081192
. 3008018938
-3/2401276
. 0248888672
.971839163
. 4342293892
. 3802435673
. 4458152464
Et même si cette valeur change d’un tirage à l’autre, la suite reste immua-
ble, derrière son chef de file : l’amorce.
RUN
AMORCE 2.939295567E-08
. 2273385388
. 6221966945
. 3639081192
. 3000189338
-5/2401276
. 2048888672
.971839163
. 4342293892
. 3802435673
. 4581352464
Nous pourrions ne pas fixer l’amorce afin de laisser le hasard jouer son
rôle dès le début. Mais alors la première valeur tirée après la mise en marche
de l’ordinateur sera toujours la même.
COULEURS ET SONS PROGRAMMÉS 93
On obtiendra donc deux fois la même suite si on utilise deux fois le même
programme, et que chaque fois aucun tirage n’a eu lieu depuis le branche-
ment de l’ordinateur. Pour éviter cela, le programme va demander à l’utili-
sateur de penser à un nombre de 1 à 255 et surtout de le taper ! C’est ce
nombre qui va servir de point de départ :
10 INPUT"TAPEZ UN NOMBRE DE 1 À 255";A
28 PRINT'"'AMORCE ‘" ;RNDC-A)
30 FOR N=1 TO 18
4@ PRINT INTCRNDCI1)*%10)
50 NEXT N
Pour changer un peu, la ligne 40 va afficher des nombres entiers pouvant
aller de 0 à 9:
RUN
TAPEZ UN NOMBRE DE 1 À 2557 123
AMORCE 5.73991201E-08
lci le 3 est
sorti...3 fois !
Nr O Q © U1 PB © © W
Par curiosité, comptons le nombre de sorties, pour chaque numéro en
rangeant ces nombres dans diverses cases d’un fichier que nous appellerons
S. Une case est repérée par la valeur de ce qui est dans la parenthèse : T.
INPUT'TAPEZ UN NOMBRE DE 1 À 255";
PRINT'"AMORCE ‘" ;RNDC-A)
FOR N=1 TD 10
T=INTCRND(13%x10)
PRINT T;,
SCT)I=S(T)+1
Ceci veut dire que si T vaut 2, on ajoute 1 dans la case n° 2 deS. Atten-
tion, la boucle n’est pas terminée.
PRINT :PRINT'BILAN DES TIRAGES"
FOR T=Q TO 3
PRINT'LE NUMERO ";T;" EST SORTI ";SCT
JS FUES"
30 NEXT T
94 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
RUN
TAPEZ UN NOMBRE DE 1 À 2557 12
AMORCE 4.48235369E-08
? 3 5 6 ? ?
3 3
BILAN DES TIRAGES
LE NUMERO EST
LE NUMERO EST
LE NUMERO EST
LE NUMERO EST
LE NUMERO EST
LE NUMERO EST
LE NUMERO EST
LE NUMERO EST
LE NUMERO EST
LE NUMERO EST
OO DUO BOUN- ©
- © WU — N © Ÿ © © ©
Et pour un nombre variable de tirages :
Essayez ce programme pour un nombre de tirages plus ou moins impor-
tants. Tous les numéros ne sortent pas aussi souvent. Que se passe-t-il quand
on augmente le nombre de tirages ?
NB : La notation S(T) sous-entend en principe une réservation de
mémoire que nous n’avons pas faite ici parce que les conditions le permet-
taient. Pour être en règle il faudrait faire cette réservation avec l'instruction
DIM que nous rencontrerons plus loin.
Un coup de
fusil-laser
COULEURS ET SONS PROGRAMMÉS 95
10
POUR RÉVEILLER, SONS ET COULEURS !
PING ZAP PAPER INK
Lorsqu’ün programme demande des données ou affiche des résultats
de temps en temps, il peut être utile de le signaler au spectateur grâce à un
son ou une manifestation visuelle. On peut par exemple sonner avant cha-
que instruction INPUT, et tirer un coup de laser dès qu’un résultat s’affiche.
CLS
PING : INPUT "NOM" 3; NS$
PING : INPUT-PRENONM" ;P$ REMARQUES
IP$=LEFT$SCP$,123+". " 40 — on conserve l’initiale du prénom à laquelle
ZAP :PRINT'MONSIEUR ;IP$:;N$;" UOUS AU on ajoute le point et un espace
GAGNE..."
PRINT'TOUTE NOTRE ESTIMEU"
Nous ne pourrons pas reproduire les effets sonores ici, essayer. c’est
peut-être adopter !
Une clochette
NOM? DULOUIS
PRENOM? RENE
MONSIEUR R. DULOUIS VOUS AUEZ GAGNE...
TOUTE NOTRE ESTIMES
Lorsque certains traitements sont longs, cette méthode est bien utile car
elle évite de fixer l’écran dans l’attente de résultats. Mais si le son gêne (après
22 h !) vous pouvez le remplacer par de la couleur.
5 PAPER @G:INK ?
1a
20
30
35
40
50
S AUEZ GAGNE..."
52
55
6@
CLS
INK 1: INPUT'NOM" ;N$
INK 2: INPUT'"PRENOM" ;P$
INK 7
IP$=LEFTS$SCP$,12+".
PAPER 1:PRINT'MONSIEUR ";IP$;N$;" UOU
WAIT 280
PAPER 0
PRINT'TOLTE NOTRE- ESTIMEZ’"
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
NA ISEEOUR En rouge sur fond noir
NOM? LELOIR
rt fond noir
En blanc sur
fond rouge
pendant
2 secondes
NOM? LELOIR
PRENOM? CHILDERIC
MONSIEUR C. LELOIR VOUS AVUEZ GAGNE...
TOUTE NOTRE ESTIMEZ
sur fond noir
Si vous avez essayé ce programme, vous avez remarqué que les couleurs
ne duraient que le temps de l’introduction ou de l’affichage : nous n’obte-
nons pas pour l’instant plusieurs couleurs d’encre ou de papier différents
en même temps sur l’écran. Rendez-vous au chapitre suivant.
SUITE DES REPONSES AUX QUESTIONS SUR LE CHAPITRE V
9. Mais non, il y a une confusion entre la variable N et T qui sert à la définir. Il
aurait fallu écrire, apparemment :
FOR N=T+2 TO T+5:?2N: NEXT N
10. PAPER 3 fait passer la page en jaune.
11. Par contre INK = 1 fournit une erreur de syntaxe ! Il ne faut pas mettre de signe
égal ; pour faire passer le texte en rouge, il suffit (et il faut) écrire INK 1.
12. Rien du tout ! Lorsqu'il rencontre un ordre REM, l’ordinateur saute la suite et
passe à la ligne suivante.
13. L'ordre RND sert à tirer une valeur aléatoire.
14. Oui : RND(9) et RND(18) fournissent le même résultat. La valeur du nombre
entre parenthèses est sans aucune importance pour autant qu’il soit positif et non
nul : ilest, en quelque sorte, fictif.
15. Non, RND(6) fournit un nombre aléatoire compris entre Ÿ et 1 et ne convient
donc pas. Réfléchissez un instant sur la seconde formule :
RND(9) fournit une valeur entre ÿ et 1 exclu
RND(9) *x*6 donne une valeur entre ÿ et 6 exclu
INT(RND(9) *6) donne un entier compris entre ÿ et 6 exclu, donc entre Yet 5 inclus
INT(RND(9) *x6) + 1 donne un entier entre 1 et 6 inclus, ce que vous voulions obtenir.
A vous, maintenant d’imaginer.un programme pour jouer au 421 !
COULEURS ET SONS PROGRAMMÉS 97
11
NOTATION SCIENTIFIQUE
1.23456789E + 10
CLS
INPUT'"UN NOMBRE
NI=NXx10
N2=N/10
PRINT N1,N2
NI=NIX19
N2=N2/10
GOTO 50
Si un nombre est très petit, ou très grand, on préfère souvent l'écrire
comme s’il était voisin de 1 en corrigeant le tir grâce à un multiple (ou un
sous-multiple) de 10 :
0.0000001 s’écrit ainsi 1E —-7
c’est-à-dire une fois dix à la puissance moins sept. Pour vous familiariser
avec ces petits et ces grands, nous allons regarder dans quel cas la notation
scientifique intervient, grâce à un programme qui demande un nombre et
qui le multiplie et le divise par 10, 100, 1000... jusqu’à ce que l’ordinateur
ne puisse plus représenter un des résultats dans ses mémoires : « OVERFLOW
ERROR IN 60 ».
SUP" 3N
Si on tape par exemple le nombre 185.637 on observe un déplacement
du point (notre virgule) vers la droite lorsqu’on multiplie et vers la gauche
lorsqu’on divise. Tant mieux ! Puis apparaît un E dans la colonne de gau-
che et un peu plus tard dans celle de droite, pour éviter d’accumuler trop
de zéros à droite ou à gauche.
UN NOMBRE SUP? 185.637
1856.37 18.563?
18563, ? 1.85637
18563? . 185637
1856370 .2185637
18563700 1.85637E-03
1856370080 1.85637E-04
1.85637E+09 1.8563/E-05
1.85637E+10 1.85637E-06
1,8563?7E +36 1.85632E-32
1.85637E+37 1.85637E-33
POVERFLOW ERROR IN 60
Ready
98
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Avec 1 au départ, le programme se bloque au moment où N1 cherche
à prendre la valeur 1E + 39 c’est-à-dire un nombre formé d’un 1 et de 39 zéros.
UN NOMBRE SUP? 1
18 st
100 .A1
1000 1E-03
10000 1E-04
120000 1E-05
12000008 1E-06
1802080008 1E-07
1090800000 1E-08
1E +093 1E-09
1E+10 1E-10
1E+35 1E-35
1E+36 1E-36
1E+37 1E-37
1E+38 1E-38
POVERFLOW ERROR IN 60
Ready
Si vous essayez 0.01, le blocage a lieu au même endroit, et N2 est devenu
nul.
Pourriez-vous trouver vers quelle valeur se produit le blocage, et quand
un nombre trop petit est-il transformé en zéro ?
COULEURS ET SONS PROGRAMMÉS 99
12
CONVERSIONS BINAIRE - DÉCIMALE
FOR INT
Vous avez vu au chapitre 1 qu’un octet représentait un nombre binaire
composé de 8 chiffres, des zéros ou des uns. Les enfants de 6 ans évoluent
en base deux comme un poisson dans l’eau. Mais c’est plutôt la base dix
qui fait partie de la vie de tous les jours... heureusement !
Voici deux programmes permettant la conversion d’un nombre écrit dans
notre bon vieux système décimal en un nombre binaire, et inversement. Ils
sont faits pour des nombres compris entre 0 et 255, c’est-à-dire 0 et
11111111 en binaire : c’est ce que peut contenir un octet.
Conversion décimale — binaire
18 REM CONVERSION DECIMAL-->BINAIRE RÉPARER
2@ INPUT'NOMBRE EN BASE DIXM3N
30 B$=""
4Q FOR P=Q TO 7
SQ Q=INT(N/2) 50 — quotient entier de la division de N par 2
30 — B$ contiendra les zéros et les uns : on com-
mence par ne rien mettre
40 à 90 — boucle de recherche des 8 chiffres binaires
6Q R=N-QX2 60 — reste de cette division : c’est un des huit chif-
20 B$=STR$S(R)+BS$ fres que l’on cherche
88 N=G 70 — ce chiffre vient se placer à gauche des précé-
9Q NEXT P dents dans B$
10@ PRINT'EN BASE DEUX : ";B$ 80 — on va refaire la même chose avec Q...
90 — .. jusqu'à épuisement des valeurs de P
Exemples :
RUN
NOMBRE EN BASE DIX? 2
EN BASE DEUX : 00080010
Ready
RUN
NOMBRE EN BASE DIX? 255
EN BASE DEUX : 11111111
Ready
RUN
NOMBRE EN BASE DIX? 256
EN BASE DEUX : @0000000
100
NOMBRE EN BASE DIX? 257
EN BASE DEUX : 00008801
Ready
RUN
NOMBRE EN BASE DIX? -255
EN BASE DEUX : 90@80@G001]
Ready
Conversion binaire — décimale
REM CONUERSION BINAIRE-->DECIMAL REMARQUES
INPUT'NOMBRE EN BASE DEUX"35;B$ =. ; _.
20 — le nombre binaire est logé dans B$ : il est con-
D=Q sidéré comme une chaîne de caractères
FOR P=Q TO ?
D=D+UAL(MNID$(B$,8-P,1))X(2*P)
40 à 60 — boucle de constitution du nomb
NEXT P ie oucle de constitution du nombre
PRINT'EN BASE DIX : ”;D
30 — on met à zéro ce qui contiendra le résultat
50 — si le chiffre binaire n° P vaut 1, on ajoute
2'àD
Exemples :
RUN
NOMBRE EN BASE DEUX? 00000010
ENCBASE; ATX 22
Ready
RUN
NOMBRE EN BASE DEUX? @1008001]
EN BASE DIX :% 65
Ready
CHAPITRE VI
L'ART GRAPHIQUE EN BASSE RÉSOLUTION
Comment utiliser l’écran pour des tracés, des dessins et même un début d’anima-
tion, c’est ce qu’on va étudier dans ce chapitre. Il est consacré aux modes graphi-
ques dits à basse résolution, car l’écran est « divisé » en 39 colonnes sur 27 rangées.
On passera au mode « haute résolution » dans le chapitre suivant, bien plus fin
puisqu'’alors, l'écran dispose de 249 par 200 « points » graphiques.
Principaux thèmes abordés
Mode texte Etoiles
TEXT RUN numéro de ligne
Modes graphiques END
Grille graphique STOP
PLOT Sous-programme
Couleurs avec PLOT Programme principal
Barres de couleur GOSUB
Graphique basse résolution RETURN
LORES LORES 1
HIRES Caractères graphiques
LORES 9 CTRL/C
Traits en LORES Q CONT
Carré en LORES ÿ Mouvement
Duplication d’instructions CHRS(8)
Suppression du curseur CHRS(9)
CTRL/Q
1. L'organisation de l’écran en « mode texte »
Pour écrire du texte sur l’écran, des lignes les unes à la suite des autres, on n’a pas
eu à se préoccuper de son organisation. Vous savez, cependant, que la « page » de
texte, le cadre blanc affiché, comporte 27 lignes et 49 colonnes, dont seules, 38 sont
utilisables. La ligne supérieure, au-dessus de ce cadre (la 28°, donc), servait à divers
messages.
Ce « mode » de travail que l’on a exploité,
MODE TEXTE jusqu’à présent, s’appelle « le mode texte »,
car il nous servait à écrire... du texte. En
TEXT anglais : TEXT.
Vous verrez l’importance de ce point quand on examinera les frois autres modes,
dits graphiques.
102
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
MODES
GRAPHIQUES
GRILLE GRAPHIQUE
BASSE RESOLUTION
En mode TEXT, oubliez
la colonne le plus
à gauche !
C’est dans ce cadre utile de 27 par 49 que nous allons commencer par écrire, puis
dessiner. Pour cela, Il nous faut désigner des positions précises ; on va dessiner
cette page avec ses lignes et ses colonnes, puis on va numéroter les lignes ef les
colonnes (voyez notre dessin) :
e Pour les lignes, aucun problème : on va de 9 à 26 (ce qui fait bien 27 au total).
e Pour les colonnes : on commence par éliminer la colonne la plus à gauche, inutili-
sable, on l’a vu. Le numéro ÿ sera donc attribué à la seconde colonne, que l’on ne
pourra pas plus utiliser. Patience ! Puis, on ira jusqu’à 38.
Vous ne pouvez pas, non plus,
travailler avec la
colonne Ÿ en mode TEXT.
Mais vous l'emploirez en modes graphiques
CORLONNVES
La grille d’écran en mode « texte ».
Voulez-vous écrire un texte au centre de l’écran, ligne 12, par exemple ?
N’employez plus PRINT, mais PLOT (pour « dessiner »), en indiquant la position
colonne, rangée, puis le texte à afficher. Supposons qu’on parte de la colonne 15 ;
faites d’abord CTRL/L pour effacer l’écran, puis entrez en mode direct :
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 103
Le mot à afficher doit
être mis entre
guillemets, comme
d'habitude
Ces deux virgules sont
obligatoires!
Avec le RETURN, le mot CENTRE s'inscrit. au centre de l’écran. Vérifiez sa
position exacte sur notre grille. Faites quelques autres essais de votre crû, mais
rappelez-vous que la « syntaxe » correcte de l’ordre est :
Virgules
obligatoires
PLOT colonne,rangée, "texte"
Guillemets
obligatoires
Voici donc une façon de loger du texte là où bon vous semble. Mais pourquoi ne
pas user de la couleur ? On peut, en effet, compléter PLOT avec un « attribut » de
couleur, comme l’on dit dans le jargon « oricien » : c’est un nombre de plus, préci-
sant la couleur.
Avec PLOT et pour mettre en couleur :
e Le texte écrit (donc, l’équivalent de INK),
utilisez les chiffres de couleurs de 8 à 7,
comme indiqués précédemment.
e Le fond (la « page »), utilisez ces mêmes
chiffres auxquels il faut ajouter 16.
Voici ce que cela donne :
Avec l’ordre PLOT
COULEUR NUMERO ATTRIBUT
[;] 16
1 17
2 18
Jaune 3 19
Bleu 4 20
Magenta 5 21
Cyan 6 22
Blanc 7 23
Maintenant, la syntaxe de l’ordre PLOT va être :
COULEURS AVEC
PLOT
C'est toujours
du bleu-vert
Virgules obligatoires
PLOT colonne, rangée;attribut
104 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
En effet, il faut choisir : l’attribut ou le texte, mais pas les deux à la fois avec
PLOT. Essayons de passer en bleu (attribut 29) la ligne 15, à partir de la colonne
19. Commencez par faire CTRL/L, puis entrez, en mode direct :
Au RETURN, toute la ligne 15, à partir de la colonne 19, se teinte en bleu, ce qui
donne ( avec de l’imagination pour la couleur) :
Trait bleu
Voulez-vous effacer cette couleur, de la colonne 39 à la fin ? Il suffit de re-colorier
en blanc (attribut : 23) cette ligne, avec :
Colonne EN
29 JG
30
Rien ne vous empêche de commander maintenant, toujours en mode direct, PAPER 1
pour voir la page devenir rouge, avec un trait bleu central, prolongé par du blanc.
A ce propos, remarquez qu’une nouvelle
commande PAPER, ou même INK, ne
modifie pas la couleur d’une position déjà
coloriée.
La même structure d’ordre, employant comme attributs de couleur les chiffres de ÿ
à 7, teinterait le texte (c’est l’équivalent de INK) et non le fond, selon le même pro-
cessus. Avec une petite différence : le caractère de la première cellule s’efface ! En
effet, rappelez-vous qu’il faut choisir : la couleur ou le caractère. Vérifiez-le en
commandant le passage en couleurs d’une ligne de texte apparaissant sur notre
écran. Pour éviter cet effacement et colorier toute la ligne, partez de la colonne 9.
Ainsi, si votre texte se trouve sur la ligne 11 et que vous vouliez le mettre en bleu,
frappez :
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 105
Vous verrez toute la ligne 11 écrite en bleu.
Mais faisons mieux : on va afficher des lignes de couleurs complètes, en choisissant
la ligne au hasard et la couleur au hasard ; parce que le programme va boucler sans
fin, une nouvelle couleur chassera l’autre dans un effet global très coloré et esthéti-
quement déjà discutable.
Il nous faut d’abord choisir une ligne (appelons-la L) au hasard, maïs obtenir une
valeur entre Ÿ et 26 inclus. Rappelez-vous que RND(9) fournit une valeur comprise
entre @et 1 exclus, donc entre Yet, dans notre écriture habituelle : 9,99999... Il fau-
dra donc multiplier la valeur aléatoire par 27 puis en extraire l’entier, ce qui s’écrira
INT(RND(9) *x27).
Rappelez-vous aussi que le premier (9) entre parenthèses n’a aucune signification ;
vous pouvez mettre 8 ou 33 ou 456, cela ne changera rien tant qu’il ne s’agira pas
d’une valeur nulle ou négative.
Pour la couleur dela ligne, qu’on va appeler T, pour feinte, c’est un peu plus com-
pliqué : il faut obtenir des valeurs de 16 à 23 incluses, donc de @+ 16 à 7 + 16 inclu-
ses. Qu’à cela ne tienne : de 9 à 7, nous savons le faire ; il suffira d’ajouter 16, ce
qui donnera l’ordre :
T = INT(RND(9) *8) + 16
Dès lors, le programme est simple à rédiger :
Choix aléatoire de
BARRES ALEATOIRES
19 R
29 L
DE COULEUR 30 T
49 P
59 G
Ordre de tracé
en couleur,
à partir de la colonne 1
er recommence à
perpétuité
NE
Lancez ce programme, et vous verrez des lignes colorées remplir l’écran et se rem-
placer au hasard, pour les lignes et pour les couleurs.
2. Graphique basse résolution, mode #8
Abordons, maintenant, le mode graphique. Il en existe deux :
GRAPHIQUE + L’un est appelé le mode graphique « basse résolution », ce qui s’écrit LORES, de
BASSE RESOLUTION l'anglais « low resolution », c’est-à-dire basse résolution. C’est par lui que nous
allons commencer.
LORES
106
LORES 9
fond
noir
Tout cela
apparait
en blanc
En blanc sur
réellement
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
e L’autre est le mode graphique « haute résolution », qui s’écrit HIRES, de « high
resolution ».
Le mode LORES se divise à son tour en deux modes, appelés tout bonnement
LORES 9 et LORES 1. A nouveau, nous allons d’abord examiner le premier,
LORES 6.
Commençons par informer l’Oric qu’on passe en mode LORES 9 ; pour cela, frap-
pez en mode direct :
Puis faites RETURN. Instantanément, l’écran devient noir, car c’est ainsi que
fonctionne LORES ; tout le texte en noir qui pré-existait disparaît du même coup,
alors qu’un Ready en blanc et un curseur blanc aussi se placent là où il fallait les
attendre, à la suite du texte pré-existant disparu.
Recommençons alors l’expérience précédente, faite en mode texte. Frappez exacte-
ment le même ordre, en mode direct, puis faites RETURN :
Nous ne pouvons utilement reproduire ici tout l’écran, noir... Au RETURN, le mot
CENTRE s'affiche au centre de l’écran, mais en blanc, cette fois.
En « mode direct », LORES 9 (ou LORES 1) ne prolongent leur action que pour la
seule « page » affichée. Si vous écrivez au-delà des 27 lignes, une « page blanche »,
en mode TEXT, ré-apparaît.
En mode LORES 8 (ou LORES 1), vous
pouvez vous servir de la colonne f.
Vérifiez-le : faites d’abord CTRL/L pour effacer l'écran, ce qui vous ramène au
mode TEXT puisque l’écran redevient blanc, puis frappez LORES 6, et enfin un
caractère quelconque, par exemple l’astérisque (mais placé entre guillemets). Cela
donne :
L "étoile (l’astérisque)
apparait en position 0,0
avec le RETURN
Ici,
faites
RE RETURN)
A propos : rappelez-vous du code ASCII ; l’astérisque a pour code 42, ce qui fait
que vous auriez aussi bien pu écrire CHR$(42) pour obtenir le même résultat.
Vérifiez-le, en modifiant la position, par exemple :
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 107
Ready
PLOT @6,@,"x"
Ready
PLOT 24,0,CHR$(42)
Cet ordre place
l'étoile ici
Notons, maintenant, un point essentiel relatif à la couleur :
En mode LORES # (comme avec le mode
LORES 1 qu’on va examiner ensuite),
le placement de la couleur se fait position
par position.
Cela veut dire qu’appliquer de la couleur sur une position ne remplira pas le reste
de la ligne. Ainsi, frappez CTRL/L pour effacer la page, puis entrez en mode
direct :
Rappelez-vous que le double-point
sert à séparer deux instructions
sur une même ligne
Couleur rouge,
pour le fond
LORES 9
PLOT 19,5,17
Avec le RETURN, la page devient noire et, sur ce fond, vous obtiendrez un unique
pavé rouge :
Pavé rouge
en position
10,5
Le curseur : en blanc !
ed
de fond est
noir!
Expérimentons alors le mode LORES 8 en tirant un trait horizontal sur la ligne 5,
en rouge (couleur de page 17), d’un bout à l’autre de l’écran (de la colonne 9 à la
38). Il faudra placer tous les pavés successivement, à partir de la position 9,5
jusqu’à 38,5 ce qui donne (faites un NEW, au préalable) :
108 PRATIQUE DE L’ORIC i ET 36 PROGRAMMES
19 REM Trait horizontal
$0 Le)
= l'écran
49 FOR N=0 TO 38
59 PLOT N,5,17
69 NEXT N
Au RETURN, un beau trait horizontal rouge apparaît sur fond noir :
Ready et le curseur
sont en blanc
Nas .
Trait rouge sur
la ligne 5
Pour obtenir un trait allant de la colonne 5 à la colonne 14, donc sur 19 positions,
modifiez la ligne 4ÿ ainsi :
TRAITS EN
LORES 9
(0 positions
Au RUN, le trait sera :
Pour un trait vertical en colonne 5, de 19 positions, le principe est exactement le
même et le programme serait (ne modifiez que la ligne 59) :
Changez aussi
le titre!
19 REM Trait vertical
29 CLS
39 LORES 9
49 FOR N=5 TO 14
50
60
On a simplement
déplacé N, pour viser
les rangées
successives
PLOT 5,N,17
NEXT N
Au RUN, vous verrez un trait vertical rouge s’installer sur la colonne 5, et sur 19
positions verticales.
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 109
De là à créer un carré complet, il n’y a qu’un pas. Voici ce qu’on veut obtenir, à
partir des mêmes positions :
| Carré de côté =10
Position
5,5
ne 14
ne à
5 Colonne
14
Et voici le programme correspondant :
RENE £es deux côtés
horizontaux
CARRE EN CLS
LORES 9
LORES 9
19
20
30
49 FOR N=5 TO 14
59 PLOT N,5,17
69 PLOT N,14,17
70 PLOT 5,N,17 ]
80 PLOT 14,N,17
99 NEXT N
Les deux côtés
verticaux
Faites un RUN : vous obtiendrez le résultat escompté (heureusement !). Mais ce
fond noir n’est pas heureux : pour passer le fond en vert (couleur 18), par exemple,
il faut badigeonner successivement tous les pavés, selon le même principe, colonne
par colonne puis, et pour chaque colonne, rangée par rangée. Pour ce faire, on va
employer deux boucles. Voici ce programme ; commencez-le à la ligne 199, par
exemple, sans faire NEW :
(es pour «colonne» et
R pour »rangée»
REM Fond en vert
FOR C=9 TO 38
199
119
129 FOR R=9 TO 26
1309 PLOT C,R,18 |
149 NEXT R
159 NEXT C
= Voici les 2
boucles
Lancez l’ensemble avec RUN : le carré rouge apparaît, puis tout l’écran est passé
au vert et le carré disparaît ! Pour bien faire, il faut faire passer les anciennes ins-
tructions 49 à 99 après 150.
110
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
DUPLICATION
D'INSTRUCTIONS
Pour déplacer des instructions, on peut
les dupliquer. Listez le programme puis,
comme si vous vouliez corriger une ligne,
modifiez leur nouveau numéro en le frappant.
Sortez de la ligne avec CTRL/A, puis faites
RETURN. La ligne modifiée est dupliquée :
dans un nouveau listage, elle apparaît
deux fois : avec l’ancien et avec le nouveau
numéro de ligne.
Il ne reste plus, alors, qu’à supprimer les lignes inutiles. Si vous faites cela, vous
devez obtenir (en reprenant les numéros suivants) :
On a supprimé de 40 à
À 100 D
19 REM Carré
29 CLS
SP RONES Pour remplir l'écran
119 FOR C=90 TO 38 de vert : comme
120 FOR R=9G TO 26 ci-dessus
139 PLOT C,R,18
140 NEXT R
159 NEXT C
160 FOR N=5 TO 14
179 PLOT N,5,17 Pour afficher le carré rouge :
189 PLOT N,14,17 instructions 40 à 90
199 PLOT 5,N,17 de la page précédente
290 PLOT 14,N,17 dubliouée
219 NEXT N upriquess
à ces nouvelles lignes
Le RUN va verdir l’écran, puis tracer le carré rouge précédent.
3. Ciel d’étoiles
Puisqu’on peut placer des astérisques (des « étoiles ») sur l’écran, pourquoi ne pas
essayer de le remplir de façon aléatoire ? On va accrocher des étoiles sur les posi-
tions R (rangée) et C (colonne) choisies au hasard avec RND :
Pour passer au
mode LORES 0
La colonne : un nombre
aléatoire, calculé
entre 0 et 38
inclus
O O1 À GO N =
S66666
9OTX27O0r zx
Or Om
D Us nn La rangée : un nombre
aléatoire, calculé entre 0 et 26 inclus
_—_—__———
Rappelez-vous le mode de calcul employé pour le tir galactique, et vérifiez qu’avec
la ligne 39, on obtiendra bien tous les entiers entre 9 et 38 inclus alors qu’avec la
ligne 49, on ira de 9 à 26 inclus.
SUPPRESSION
DU CURSEUR
ETOILES
DANS LE CIEL
Séquence pour
mettre le
ciel en
bleu
RUN
NUMERO DE LIGNE
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 111
Faites un RUN : l’écran devient noir, et des étoiles vont s’allumer au hasard,
jusqu’à remplir totalement l’écran : nous ne vous le dessinons pas !
Au cours de l’exécution de ce programme, le curseur blanc s’entête à rester sur sa
ligne et continue à clignoter, ce qui gâche un peu l’effet. Or, on peut le supprimer.
Stoppez ce programme avec CTRL/C, puis faites CTRL/L pour revenir à un écran
blanc.
Frappez alors sur CTRL/Q : le curseur
disparaît et restera absent tant que vous
n’aurez pas frappé à nouveau CTRL/Q.
Or, CTRL/Q dispose d’un code numérique, qui est 17. On peut le programmer
avec CHR$(17) ; ajoutez alors au début du programme :
Si vous refaites un RUN, vous constaterez que le curseur a disparu. Aftention, tou-
tefois : après le CTRL/C qui stoppe ce programme, il ne revient pas de lui-même
(rappelez-vous que l’ordinateur se borne à obéir aux ordres) ; aussi vous faudra-t-il
frapper CTRL/Q, ou donner l’ordre, en mode direct : ? CHR$(17).
Fort bien, mais des étoiles blanches sur un ciel noir, c’est peu poétique. Pourquoi
pas des étoiles sur un ciel bleu (couleur n° 4), par exemple ? On a vu, précédem-
ment comment procéder, alors allons un peu loin : on va aussi effacer des étoiles,
aléatoirement, avec RND. Pour effacer une étoile sur un ciel bleu, il suffira de pla-
cer un pavé bleu à sa place (aléatoirement). L’ordre sera donc PLOT C,R,289.
Ajoutons donc cet ordre en mêlant ces programmes, ce qui obligera à refrapper la
suite afin d’obtenir le programme complet suivant, qui démarre en 199. Notez
encore deux choses :
1) — On a supprimé l’ordre INT avec RND. Maintenant que vous savez à quoi il
sert, on peut préciser que, dans le cas précis de PLOT, ce dernier prend de lui-
même la valeur entière des nombres qu’on lui propose !
2) — On a réservé un cadre bleu tout autour du ciel. Donc, les colonnes iront de 1 à
37 et non de 9 à 38, et les rangées de 1 à 25’et non de ÿ à 26.
Voici donc le programme au complet qu’on a volontairement démarré en 199 (sur-
tout, ne faites pas NEW si vous voulez qu’on puisse vous faire une autre démons-
tration) :
Séquence pour
allumer les
étoiles
Séquence pour
éteindre des
NNNNN = mb mb mh mb ob ob o mb md
BON = © © © HI O O1 B ON = ©
606066060666 66066666
r 4
m
*
æ
Q
Pour lancer ce programme, ne faites pas RUN seulement car ce serait le programme
précédent qui démarrerait, mais précisez la ligne : RUN 199. Dès lors, le Basic ira
directement à 199, ignorant ce qui précède.
112
STOP
SOUS-PROGRAMME
PROGRAMME
PRINCIPAL
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
On peut lancer n’importe quel programme
en mémoire (lorsqu'il y en a plusieurs) en
indiquant son numéro de ligne. En l’absence
d’un numéro de ligne, le Basic recherche le
programme qui commence par le plus faible
numéro de ligne.
Donc, faites :
Vous verrez alors des étoiles s’allumer ou s’éteindre sur un fond de ciel bleu. Après
le CTRL/C qui stoppera ce programme, n’oubliez pas de faire CTRL/Q pour réta-
blir le curseur.
Puisque nous vous avons montré comment démarrer un programme à partir de
n’importe quelle ligne, ajoutons qu’on peut également marquer une fin obligatoire.
Ce sera utile lorsque plusieurs programmes se succèdent. A la fin d’un programme,
vous placerez l’ordre END (« fin »), comme au cinéma, avec un numéro d’instruc-
tion. Par exemple :
Le Basic, rencontrant END, s’arrêtera et n’ira pas chercher des instructions ulté-
rieures qui existeraient. Ou encore, on pourra utiliser l’ordre STOP : lorsque le
BASIC le rencontre, il cesse l’exécution mais affiche le numéro de ligne sur lequel il
s’est arrêté.
4. Sous-programmes
Vous vous êtes familiarisé avec le maniement de la basse résolution, en LORES ÿ
avec le programme précédent. Celui-ci comporte cependant une redondance peu
élégante : les lignes 189 et 199 sont les mêmes que les lignes 219 et 229. Voici com-
ment supprimer ce phénomène.
On va « extraire » ces deux lignes et les placer ailleurs, par exemple en 599. Quand
on en aura besoin, on fera appel à elles.
Cette séquence distincte à laquelle on peut
faire appel à volonté est désignée par le nom
de « sous-programme ».
Par opposition, le programme appelant est
le « programme principal ».
A la fin du sous-programme, on sera néanmoins contraint d’ajouter une instruc-
tion précisant que le sous-programme est terminé et qu’il faut revenir au pro-
gramme principal.
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 113
De ce fait, deux ordres nouveaux intervien-
nent :
e i .
RETURN GOSUB, qui « appelle » le sous-programme
et est situé dans le programme principal.
e RETURN qui renvoie au programme
principal après exécution du sous-programme.
Le renvoi se fait toujours et automatiquement
à l’instruction qui suit l’appel par GOSUB.
Le plus simple consiste à vous montrer comment transformer le programme précé-
dent : supprimez les lignes 199 et 229, modifiez 189 et 219, et écrivez les nouvelles
lignes 599 à 539 comme suit (la REM est en prime !).
Attention : il faut écrire RETURN et non
frapper sur la touche du même nom, à la
ligne 539. C’est là une source de confusion
regrettable !
Voici donc ce programme avec son sous-programme :
1er appel du
sous-programme
190 REM Quel
119 ? CHR$(17
129 LORES 9
139 FOR C=@ to
140 FOR R=Q@ TO
159 PLOT C,R,2
169 NEXT R
179 NEXT C
180 GOSUB 509
299 PLOT C,R,"x"
219 GOSUB 599
2e appel du sous-
239 PLOT C,R programme
249 GOTO 189
500 REM Sous-prog
519 C=RND(9)*x37+1
5209 R=RND(9)x25+1
530 RETURN
nn no de ame 4 Ligne 220
supprimée
Ordre de retour
au programme
principal
On peut illustrer ainsi ce programme :
114 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Programme principal Sous-programme (sp)
Lignes 199
d
110 ee appel du
CNT
SP
509 Lignes
519
529
539
Et bouclage
par le GOTO 180
C'est le
RETURN
Rappelez-vous que le retour se fait
automatiquement à l’instruction qui suit celle
d’appel, le « GOSUB ».
Les sous-programmes ne sont réellement très intéressant que lorsque la séquence
passée en sous-programme est longue, ou lorsqu’elle doit intervenir de nombreuses
fois. Ce pourrait être le cas si elle devait intervenir dans des programmes différents.
Avec un sous-programme, en effet, on ne frappe qu’une seule fois la liste des ins-
tructions répétitives ! En outre, on économiserait de la mémoire centrale (mais pas
dans notre cas, où le sous-programme était vraiment trop court).
5. Le mode LORES 1
Passons au mode LORES 1. Dans ce mode, la différence avec LORES ÿ réside dans
le fait qu’on change de jeu de caractères. Vous ne disposez plus des caractères
LORES 1 alphanumériques mais de caractères spéciaux, appelés des caractères graphiques :
un demi-pavé, ou un quart, etc. À chaque touche correspond l’un de ces caractères.
Faites, en mode direct et après un CTRL/L :
LORES 1
Puis, frappez RETURN. L’écran devient noir et un mot qui devrait être « Ready »
apparaît en blanc ; en fait, il s’agit des dessins correspondant à ces lettres ; ils n’ont
plus aucune signification :
Voici le caractère
graphique pour le R
majuscule
Le mot «Ready» en mode
LORES 1 (tout est blanc
sur fond noir !)
— — #7 Kur fond noir DZ
Les minuscules n’ont
que cet équivalent,
à elles toutes
Curseur
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 115
Ces caractères graphiques ont pour numéro de caractère 32 à 128 en version dite
alternée. Vous pouvez les afficher, mais en utilisant un code « secret » qui est
CARACTERES ,CHR$(27);”’1”” et que comprend votre Basic. Par exemple :
GRAPHIQUES
; CHR$ (65) à ’
a e À est le
) code ASCII n°65
Mais, par contre et avec le code d’alternative :
? ,CHR$(27); "1"; CHR$S(65)
C'est l’autre code,
«alterné», graphique
du n° 65
Pour afficher sur un seul écran tous les caractères graphiques, de 32 à 128, créez ce
programme et lancez-le (après un NEW, éventuellement) :
Code pour les
caractères alternatifs
Tous ces caractères s’inscrivent individuellement dans une « grille » de 8 par 6
qu’on peut représenter ainsi :
Si tout est plein, vous obtenez le pavé correspondant au curseur ; selon le remplis-
sage, on forme tous les autres caractères, dont les graphiques.
Pour faire défiler tous ces caractères graphiques avec leur numéro, entrez ce pro-
gramme : |
Pour sauter une ligne … On a simplement ajouté
N pour afficher le code
. Et temporiser
un instant
Il y a 96 caractères et l’on en place un toutes les deux lignes, de sucroît : vous ne les
verrez pas tous d’un coup.
116
CTRL/C
CONT
MOUVEMENT
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Pour stopper ieur défilement, frappez sur
CTRL/C. Pour le faire reprendre, faites
CONT pour CONTinuer, en frappant ces
lettres sur le clavier. Cette méthode s’applique
très généralement à tous les cas de défilement.
Au passage, remarquez le caractère 57, qui ressemblerait à une fusée : voilà qui
peut être utile pour les jeux ! Celui qui est semblable au curseur est le 95. Le 83 est
un gros signe « égal » (soit =). Utilisons-le pour le renvoyer d’un bord à l’autre de
l’écran, en rebondissant.
Il faut, tout d’abord, le placer sur la rangée choisie, 12 par exemple, en position de
départ, à gauche, sur la colonne C= 1, par exemple. Puis, on va l'emmener de C=1
à C=2 mais il faudra l’effacer sur C=1. Pour l’effacer, on affichera simplement
un espace, donc ”” ”” sur la position antérieure. Démarrons ce programme en com-
mandant un mouvement de gauche à droite (faites un NEW au préalable) :
id RE macro Pour placer le caractère
20 CLS 83, qui est un gros
39 LORES 1
40 FOR C=1 TO 38
59 PLOT C,12,CHR$(83)
69 PLOT C-1,12," ‘
79 NEXT C
Pour l’effacer de la
position précédente (C—1) et
donner l'illusion du mouvement
Lancez ce programme ; le « 83 », un gros signe égal, va se déplacer de la gauche à
la droite de l’écran où il s’arrêtera. Il faut maintenant le faire revenir ; pour cela, le
FOR... TO va aller de 37 à Q par pas négatif de — 1. L’effacement, lui, ne se fera
non plus sur C —1 mais sur C +1 puisqu’on fait marche arrière. Cela donne :
On recule, cette
2 FOOT 82121 Que LEE! |
99 P 1e 83 ;
199 PLOT C+1,12," ” Nouvel affichage …
11
12
. Et effacement de la
position précédente
Pour recommencer de
l'avant!
Lancez ce programme ; incontestablement, l’illusion du mouvement, de la gauche
vers la droite et retour, et on repart, etc., est correcte. Alors, ajoutons le son, une
sonnette au départ de la gauche, un SHOOT à l’arrivée à droite :
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 117
35 PING
75 SHOOT
129 GOTO 35
. Et modifiez le
renvoi ainsi
19 REM mouvement
29 CLS
39 LORES 12
35 PING
49 FOR C=1 TO 38
50 PLOT C,12,CHR$(83)
69 PLOT C-1,12," ‘”
79 NEXT C
75 SHOOT
89 FOR C=37 TO @ STEP -1
99 PLOT C,12,CHR$(83)
199 PLOT C+1,12," “
119 NEXT C
129 GOTO 35
Lancez-le : c’est plus réaliste avec le son. Maintenant, à vous de tenter de l’amélio-
rer, avec de la couleur, par exemple. Essayez : pourquoi pas ?
6. Pour mêler les genres
Sachez qu’on peut encore employer les caractères alphanumériques en mode
LORES 1 ou ceux graphiques en mode LORES 6, et ce, grâce à un caractère spécial
qui est, selon le cas :
e Pour obtenir les caractères a/phanumériques en LORES 1, il faut donner le code
CHRS$(8). Faites l’essai, d’abord en LORES 1 « pur » et en mode direct.
C'est toujours notre
gros «égal»
Pour passer
dans ce
mode …
Séparateur
d'instructions
| LORES ‘1 PLOT 29,19,CHR$(83)
Au RETURN, le même symbole graphique va s’afficher, en blanc sur fond noir, à
la position 29, 19.
Bien : maintenant, on va rester en LORES 1 pour afficher le caractère a/phanumé-
rique correspondant au même code 83 ; c’est un S majuscule. Pour cela, on va
« commuter » en alphanumérique avec CHR$(8) puis, à l’aide du caractère de con-
caténation, le symbole « plus » (+) qu’on vous a présenté au début de ce livre, on
va demander l’affichage du S, ce qui donne (faites d’abord un CTRL/L) :
118
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Commutation
vers les
caractères alphanumériques
Pour
«concaténer)
Le caractère
«S»
Au RETURN, c’est un bel S qui s’affiche, cette fois, en 29,19.
e Pour revenir aux caractères graphiques, on « commuterait » à nouveau « le cla-
vier » avec, cette fois, + CHRS$(9). Voici un petit programme qui vous en indique le
mode d’emploi :
Le mot alphabétique
à afficher
J On commute en
alphanumérique
D'abord, le
Ordre d'affichage
On re-commute
pour revenir au
graphique
dernier
gros =
On a utilisé la variable alphanumérique A$, définie en 39, pour bien vous faire
comprendre le processus (car ainsi, on peut l’isoler de l’ordre PLOT). Au
RETURN, vous verrez s’afficher à partir de 15,19 en blanc sur fond noir :
… BONJOUR ==
e En mode LORES 9, pour obtenir les caractères graphiques, on procède de même
mais en inversant les commandes. Ainsi, CHR$(9) fournit les caractères graphiques
alors que CHRS$(8) ramène au « clavier » alphanumérique.
Considérez CHRS(8) et CHRS(9) comme des
commutateurs :
° CHRS(8) commute vers le clavier alpha-
numérique.
° CHRS$(9) commute vers le clavier graphique.
Expérimentons un dernier ordre qui s’applique aussi bien en mode TEXT qu’en
LORES 9 et LORES 1. Passons alors simplement en TEXT, avec CTRL/L, et pla-
çons un S en 29,19 avec un PLOT. Puis, on va demander au Basic quel caractère se
trouve en 29,19 (en supposant qu’on l’ait oublié). Cette demande se dit PRINT
SCRN(29,19), où SCRN vient de « screen », écran en anglais. Voici ce que cela
donne :
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 119
En mode texte, pour
PR 7 ee ie afficher S en 20, 10 }- — —
PLOT 29,19,"S"
Ready
? SCRN(290,19)
83
Maintenant, on
demande au Basic
ce qui se trouve en 20,10
… Et il répond :
«Le caractère
de code 83», ce
qui correspond bien
au S (dans le code ASCII)
Ready
L'utilisation pratique d’une telle commande ? Pensez aux jeux : si le missile atteint
la position du navire, tout explose ; mais où se trouvent-ils, tous deux ? Mais au
fait, comment programme-t-on des commandes conditionnelles de ce type ? Vous
l’apprendrez dans notre prochain chapitre.
QUESTIONS SUR LE CHAPITRE VI
Voici quelques questions, mais en fait, nous souhaitons que vous vous entraîniez
ensuite à imaginer des programmes par vous-même !
1. En mode graphique LORES, la résolution de l’écran (le nombre de positions) est de :
D 39 fois 27
CO 620 par 340
2. Peut-on écrire : PLOT *’ BONJOUR’
[] Oui
[] Non
3. Pour placer une couleur en LORES et en un point précis, l’ordre est :
[1 PLOT colonne,rangée,couleur
[1 PLOT couleur = rangée;colonne
4. La différence entre LORES 8 et LORES 1 est constituée par :
[1 La définition de la grille disponible
[1 Le jeu de caractères
5. Peut-on indiquer le numéro de ligne avec un RUN pour choisir entre plusieurs programmes ?
[] Oui
[ Non
6. À quoi sert l’ordre END :
[ À marquer la fin d’un programme pour le Basic |
[1 A séparer des séquences de programmes lors de leur rédaction, afin que le pro-
grammeur s’y retrouve.
7. Pour appeler un sous-programme, on doit écrire :
[] GOTO SUB numéro
Ü GOSUB numéro.
où numéro est le numéro de l'instruction à laquelle commence le sous-programme
8. A la fin du sous-programme, l'instruction de retour s’écrit :
[] RETURN numéro de ligne
[1 RETURN
9. Pour arrêter un défilement sur l’écran, on frappera :
[1 RESET
[ CTRL/C
Réponses page 120
120 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
REPONSES AUX QUESTIONS SUR LE CHAPITRE VI
1. En mode LORES, la grille d’écran est de 39 colonnes sur 27 rangées.
2. Non, la syntaxe est fausse car il faut indiquer la position.
3. L’ordre correct est PLOT colonne,rangée,couleur.
4. Le jeu de caractères n’est pas le même en LORES 9 et en LORES 1.
5. Oui ; on écrira RUN 54, par exemple, pour un programme commençant en 599
si un autre le précède.
6. END marque la fin d’un programme pour le Basic. Mais vous pourrez aussi
l’employer pour tester des séquences de programme que vous venez de rédiger :
placez provisoirement un END là où vous voulez qu’elles s’arrêtent ; supprimez-le
ensuite.
7. Pour appeler un sous-programme, on écrit GOSUB numéro, par exemple
GOSUB 1999.
8. A la fin d’un sous-programme, l’instruction de retour s’écrit RETURN tout
court, surtout sans numéro de ligne !
9. Pour arrêter un défilement sur l’écran, faites CTRL/C.
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 121
13
ARC-EN-CIEL
LORES PLOT READ DATA
L’instruction PLOT permet de créer très vite une bande horizontale dont
on précise la couleur. Nous allons l’exploiter pour obtenir une palette de cou-
leurs sous forme de bandes s’étalant sur plusieurs lignes de l’écran. Pour
commencer, suivons l’ordre des couleurs convenu par l’Oric ;
1 rouge, 2 vert, 3 jaune, 4 bleu foncé, 5 magenta, 6 bleu clair.
Dans l'instruction PLOT, il faut ajouter 16 pour obtenir le code de cou-
leur du papier.
CLS
L=@ REMARQUES
FOR (ES TO 6 20 — on commence à prendre dès le haut de l’écran
FOR N=1 TO 4
PLOT @,L,C+16
L=L+1 4 1e boucle pour une bande (l’équivalent de
ignes de texte)
NEXT N
NEXT C
30 à 80 — boucle sur les 6 couleurs
50 — apparition d’une ligne colorée
60 — passage à la ligne suivante
L’exécution de ce programme va vous donner 6 bandes de couleur et
une bande blanche en bas de l’écran.
Le message Ready s’affiche vers le haut de l’écran puisqu’on n’a rien
écrit depuis l’instruction d’effaçage de la ligne 10. PLOT ne déplace pas le
curseur comme le fait PRINT.
Bleu foncé
122
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Si l’on veut ranger les couleurs, comme elles figurent dans l’arc-en-ciel :
violet, indigo, bleu, vert, jaune et rouge, il faut utiliser les codes dans cet
ordre. Pour faire respecter cette succession, nous utiliserons deux instruc-
tions nouvelles qui vont de pair : READ et DATA.
DATA permet de constituer très facilement un fichier de valeurs, et
READ lit ces valeurs. Si on écrit DATA 5,4,3,2,1 puis READ CO c’est la
READ valeur 5 qui est lue et placée dans CO, comme si on avait écrit CO =S.
DATA Si une deuxième lecture intervient avec READ CO, c’est la valeur 4 qui
se met dans CO en effaçant la valeur 5 qui s’y trouvait comme si on avait
écrit CO=4,.
Mais la grande différence, c’est que si l’instruction READ CO est pla-
cée dans une boucle, elle lira successivement les valeurs figurant dans l’ins-
truction DATA.
READ CO est général puisque la valeur ne figure pas, contrairement
à CO =4 ou CO=S. On retrouve la même souplesse que pour l’instruction
INPUT que l’auteur du programme emploie pour laisser la parole à l’utili-
sateur, mais avec READ c’est l’auteur qui fixe les données.
19 CLS
snouse
28 L=0
30 FOR C=]1 TO 6 15 — les couleurs dans l’ordre
35 — lecture d’un code d’une couleur
FOR N=1 TO 4
PLOT @8,L,CO0+16
L=L+1
NEXT N
NEXT C
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 123
CLS
PAPER G:INK 7
DATA 6,7,1
FOR C=1 TO 3
READ CO
FOR L=@ TO 25
PLOT (C-1)%x13,L,CO0+16 60 à 80 — boucle pour une bande : 26 lignes de haut
NEXT L
NEXT C
Bleu
Noir
LORES
Jusqu’à maintenant on a travaillé en mode texte. Que se passe-t-il si
dans ce programme, on remplace CLS par LORES O, à la ligne 10 ?
L’instruction PLOT n’agit plus sur toute la partie de la ligne située à
droite de la case précisée, mais seulement sur cette case.
Le programme précédent va tracer une colonne colorée comme les ban-
des, sur fond noir, et le mot Ready s’affichera en bas de l’écran (en chassant
d’ailleurs la moitié de la colonne violette).
Si on change la ligne 40 :
40 PLOT 20,L,CO +16
la colonne se déplace au milieu de l’écran.
Le mode LORES 1 donne le même résultat, puisqu’on ne définit que
la couleur du papier, sans tracer de caractères.
Vous avez remarqué que le retour en mode Texte se fait automatique-
ment lorsqu’on atteint le bas de l’écran.
Un drapeau
Pour beaucoup de drapeaux, les bandes sont verticales. Notre programme
ne convient donc pas et nous avons le choix entre deux méthodes : dessiner
les bandes en mode graphique basse résolution en juxtaposant plusieurs colon-
nes de même couleur pour obtenir une bande large, ou bien rester en mode
texte : pour un drapeau tricolore, on remplira d’abord l’écran entièrement
d’une couleur, puis en se décalant vers la droite, on modifiera la couleur
des deux tiers de droite, pour finir avec le dernier tiers.
Prenons le cas du drapeau français avec des bandes larges de 13 cases :
REMARQUES
20 — pour avoir un fond noir
30 — les couleurs, bleu, blanc, rouge
40 à 90 — boucle sur ces trois couleurs
50 — lecture d’une couleur
70 — coloration d’une ligne, ou des deux tiers de
droite, ou du tiers
Ready
(Rouge
Vous pourrez passer en revue tous les drapeaux tricolores à bandes
verticales, en changeant simplement les valeurs de la ligne 30.
124
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
14
C’EST PLUS C’EST MOINS
PLOT SGN
10 NM=25
Ce jeu très connu peut bénéficier d’une présentation visuelle en se ser-
vant de l’instruction PLOT et en regardant l’écart entre le nombre à décou-
vrir et celui que vous proposez.
Si cet écart est plus petit que zéro, vous êtes trop bas et vous obtiendrez
sur l’écran une ligne rouge, si vous êtes trop haut, la ligne sera jaune, et si
vous avez trouvé elle sera verte. Vous avez droit à 20 essais, même si vous
trouvez avant.
Pour arrêter avant le vingtième essai, tapez (c), en maintenant la
touche enfoncée au moment où vous appuyez sur
On utilisera une fonction nouvelle, SGN, pour savoir si l’écart est plus
petit ou plus grand que zéro, ou s’il est nul : SGN(—2) vaut — 1, SGN(3)
vaut 1 et SGN(0) vaut 0.
REMARQUES
10 — le plus grand nombre possible
29 CLS:PRINT'DEUINEZ UN NOMBRE DE 1 A
1 : NM
30 — nombre à découvrir compris entre 1 et NM,
inclus
30 A=INTCRNDCI)XNM)+1
4Q FOR E=1 TO 28
50 INPUT N
6@ Q=SGNC(A-N)
7@ P=CNM-N)JX26/CNM-1) c’est trouvé
89 PLOT 18,P,18-Q
40 à 100 — boucle donnant droit à 20 essais
50 — introduction d’une proposition
60 — Q=1 : c’est moins, Q = — 1 : c’est plus, Q=0
70 — P : numéro de la ligne à colorier, entre 0 et 26
38 PLOT 11,P,STRS$CN) 80 — apparition de la bande teinte en rouge, jaune
100 NEXT E
ou vert selon le cas
90 — affichage du nombre proposé au début de la
bande
Utilisation :
La ligne 20 fixe une limite pour le nombre à découvrir qui sera toujours
compris entre 1 et cette limite. Vous pouvez la changer mais il faut que les
nombres proposés la respecte, sinon vous obtiendrez une erreur : Illegal quan-
tity in 80.
Pour que le programme s’arrête de lui-même lorsque le nombre est
trouvé, il faut ajouter une ligne dans la boucle qui force l’arrêt si Q vaut
zéro. Ce serait le rôle de l’instruction IF... THEN... que vous rencontrerez
dès le chapitre VII. Si vous savez déjà l’utiliser, n’hésitez pas à vous en ser-
vir dès maintenant !
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 125
15
UNE MOSAÏQUE VIVANTE
PLOT LORES
CLS
CO=INTCRNDC1)%X8)
C=INTCRNDCI)%x39)
L=INTCRNDCI)*x27)
PLÔOT GC; ECG 16
GOTO 20
Pour représenter
les couleurs voici
ce qu'on a trouvé :
une bande de
couleur c'est un
chiffre suivi
de @
1@@@@
c'est une bande
rouge qui occupe
la place de 5
caractères
En mode texte l'instruction PLOT peut servir à fixer la couleur du papier
sur la partie droite de la ligne qui commence à la case précisée. Si on l’em-
ploie un grand nombre de fois en changeant la case et la couleur, on obtien-
dra une espèce de mosaïque formée de bandes horizontales de largeur et de
couleurs variées. Laissons le hasard déterminer les changements : la couleur,
la place horizontale et verticale de la case de gauche.
REMARQUES
20 — la couleur
30 — numéro de colonne
40 — numéro de ligne
50 — une bande
60 — on continue
eo4ee1ee/e70e000663e6e66ec166626611e66e]
546260664400075e60040/e0ce65ecces/e65ecese
eG5e623c006ce602004600406]2e6e6ee/7e0ce6e
e266C600G6CcCC0esecccccue4cec2ec3eccecseceee
e3e63e666c3c65e5c6c/cec]leccreceeenc6e20
e480264861010c6e72e66600ce5cce36ce5ee/156063
e663e77660/7e60e4646c5ecece/7eele/1@76e20
CCCCCCCCGcCS5460346e0e6cece666c460340666e/e/
eeees5sce3n0644336050@]/4]106el06806eac0e]
566022050000! ecceccece6es5ce6pele06ees5e
e40ce56encereleces4cece/3066026456a26c827@e
e2cec262cneccecee/730320cececne6e6e//6756e
eCG21060@5c07ee140c06e66e44256ee0e]5e6e/
2200800200 2060060e0448030260005006236
6G6@/3060260554024]500600603]060e6]160065e@
05e36e3@767a6e0/7406056ce64/0ee3ecce0liee
CSO0e6CC12036e6e6e6c1621@7e0e3e2060666433
CC1e606]cCecee6c260/]60626003010833/7e66a
30336005 GC6LPC20600626602167666026862830
606266061666 1001264707C6060660e]1086412
e5a7061360660e670661607ece0066e260e5566e80
61040108351603264602ce6cecec3e6e0cec4c6e6277
CCCACECCCCCCCeCEGCCeeA4S52166155ce26066@
@63641 760101546671 060266ce6e1020165686
4116003050 cccececec664@a/71606e/7e6e3e38840
Se6e65@51e0cce3eeleecelecesesice626831@
C62010066Careec063/76671000606537962/606
126
Ÿ c'est noir
1 c'est rouge
etc.
selon la convention
ORIC
5 PRINT CHR$(127)
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Chaque nouvelle bande détruit ce qui se trouvait à sa place, jusqu’au
10 — mode graphique basse résolution
bord droit de l’écran. Pour composer la mosaïque avec des carreaux et non
des bandes, il suffit de se placer en mode graphique faible résolution. L’ins-
truction PLOT ne concerne plus alors que la case dont on fournit la position.
REMARQUE
10 LORES @
Le fond est noir et se recouvre progressivement de carreaux de couleur,
204070403100063060607000020021460803166
17152012210042060170052032426010003001
23040051027000400420060086300607726710
0072?670223005044347601600053006324648
10020401003136210105005200202763560652
265000024062410631041305051460533881 72
52206003305450020063710013006303706477
14044255530705440305514000230704040625
133657005106030430354?176156505004 1462
62132514031406000105200120440262034060
06003150515020000754415075073700620120
@0003005220411707007768715400503173706
4008245025207070603400600120647?7506056
04204360120014206010032555551620253325
2000703106142560701035013020657003001@
60003537200300303004760177d15402061051
10000400401301500340005174600301607300
119303020007080131344412144300600406272
1470855226615/7203010251060515462120360
017066/7300701045602060603000080103540@
20024600046020142063254130661436072365
4166/520400615250063750333005003205310
2036060536060700401000103006506600475SS
54201100666700021560001104001020120206
4764710275040230716@040?7004036602670701
0001007340073170010656064653361 7665205
400806505040730100310200563534270020067
dont le noir puisque la ligne 20 donne à CO des valeurs allant de 0 à 7.
Tout au long du spectacle, un carré blanc ne cesse de clignoter : c’est
le curseur. Pour le supprimer on peut ajouter la ligne :
Quand vous aurez arrêté le programme avec CTRL C
CTRL Q pour récupérer le curseur.
, tapez
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 127
16
HISTOGRAMME
LORES PLOT DIM
CLS
INPUT'"NOMBRE DE
DIM UCNB)
INPUT'"UALEUR MAXIMUM" ;Un
FOR N=1 TO NB
PRINT'UALEUR NO
INPUT UCN)
NEXT N
CLS
LORES @
FOR N=1 TO NB
Un histogramme est un diagramme à barres c’est-à-dire un moyen de
représenter graphiquement l’évolution d’un phénomène au cours du temps,
une répartition en différentes catégories.
Ce diagramme a l’aspect de tuyaux d’orgue : des barres verticales dont
les hauteurs variées traduisent l’importance du phénomène à représenter.
L’instruction PLOT utilisée en mode graphique basse résolution per-
met ce genre d’image. Si on accepte de compter les valeurs et de chercher
la plus grande d’entre elles, le programme qui va tracer l’histogramme peut
se découper en deux parties : l’introduction des données, et le tracé. Nous
traiterons un maximum de 30 valeurs et la barre la plus haute occupera 27
lignes.
Avec une seule couleur :
| REMARQUES
UALEURS" ; NB
30 — réservation de places en mémoire vive pour
les valeurs
40 — VM servira à cadrer l’histogramme : la valeur
la plus grande en haut de l’écran, zéro en bas
"5N;
50 à 80 — boucle d’introduction des NB valeurs
90 — effacement de l’écran en mode texte pour
positionner le curseur en haut à gauche
100 — passage au mode graphique basse résolution
110 à 160 — boucle sur les valeurs
120 — position du haut d’une barre
NL=INTCCUM-UCN))Xx26/UM) 130 à 150 — boucle de tracé d’une barre
FOR L=NL TO 26
PLOT N+8,L,17
NEXT L
NEXT N
140 — barre rouge
A la ligne 30 apparaît une instruction nouvelle : DIM. Elle permet de pré-
voir de la place en mémoire vive pour un fichier dont le nom sera V et qui
contiendra les valeurs introduites à la ligne 70.
Ces différentes valeurs portent le même nom, V, et on les distinguera
par un numéro placé entre pharenthèses (lignes 70 et 120)
Exemple :
Représenter sous forme d’histogramme la hauteur d’eau tombée en
moyenne chaque mois à Brest.
Janvier 80 mm Juillet 50 mm
Février 72 mm Août 55 mm
Mars 63 mm Sept. 65 mm
Avril 54 mm Octobre 85 mm
Mai 40 mm Novembre 100 mm
Juin 45 mm Décembre 85 mm
128 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
NOMBRE DE VALEURS? 12
VALEUR MAXIMUM? 120
UALEUR NO 1! ? 8@
VALEUR NO 2 ? ?2
VALEUR NO 3 ? 63
UALEUR NO 4 ? 54
VALEUR NO 5 ? 40
VALEUR NO 6 RE RÉ a
UALEUR NO 7 ? 50
VALEUR NO 8 5.55
UALEUR NQ 9 2:65
VALEUR NO 10 ? 85
UALEUR NO 11 ? 100
UALEUR NO 12 ? 85
A
CT TN
oo
sl
A il
A
a
CET
dl
CT LE
Comme toujours lorsque le programme s’achève, le mot Ready appa-
raît, en-dessous de la dernière ligne affichée par une instruction PRINT. C’est
grâce à la ligne 90 que Ready s’affiche en haut de l’écran, sinon il pourrait
très bien apparaître en bas et même faire glisser l’histogramme vers le haut !
Pour éviter que Ready ne coupe une ou plusieurs barres, on a décalé le début
de l’histogramme en ajoutant 8 à N à la ligne 140.
Version multicolore
Dans cette ligne la couleur du papier est toujours le rouge (code 17).
Pour faire ressortir encore mieux les diverses amplitudes du phénomène
observé, on peut changer de couleur de temps en temps. On a choisi de le
faire toutes les 4 lignes et de tolérer toutes les couleurs sauf le noir qui est
déjà la couleur du fond ! La couleur d’une colonne dépendra de sa hauteur.
Voici les changements à apporter :
129 NL=INT(CUM-UCN))X26/UN) REMARQUES
125 T=INTCNL/4) 125 — T est la teinte d’une barre
138 FOR L=NL TO 26
148 PLOT N+8,L,17+T
15Q NEXT L
140 — barre de couleur variée
Nous ne vous montrerons pas de résultats, couleur oblige !
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 129
17
UN MOT TRANSFORMÉ
PLOT SCRN
SCRN
10
20
30
40
50
68
78
80
CLS
Nous avons surtout utilisé les lettres majuscules, et pourtant votre Oric
sait très bien afficher les minuscules, car elles ont leur code tout comme leur
grande sœur. Le code du a est 97 celui du À 65, pour b c’est 98 et pour B
66, c’est-à-dire qu’il suffit d’ajouter 32 au code de la majuscule pour obte-
nir celui de la minuscule. On va même observer la transformation sur l’écran :
la fonction SCRN permet de connaître le code d’un caractère affiché sur
lécran. Affichons d’abord un mot en majuscules, puis grâce à SCRN, modi-
fions le code de chaque caractère affiché.
REMARQUES
INPUT'UOTRE MOT" ;nS 30 — affichage du mot sur la 6° ligne à partir de
PLOT 5,6,M$
WAIT 50
FOR C=I1 TO LENCNHS$)
CA=SCRN(C+4,6)
PLOT C+4,6,CHR$(CA+32)
NEXT C
la cinquième colonne
40 — une pause pour voir
50 à 80 — boucle pour changer chaque lettre
60 — CA : le code de la C° lettre du mot
70 — affichage de la lettre transformée
Tapez un mot, rien d’autre que des lettres.
Votre mot s’affiche sur la sixième ligne, reste un instant puis se trans-
forme lettre après lettre :
VOTRE MOT? ALPHABETISATION
Ready
Après transformation
alphabetisation
Si vous tapez des caractères qui ne sont pas des lettres, le changement
risque d’être étonnant : une virgule se transforme en L !
Comment conserver l’initiale en majuscule ? Il suffit de-commencer la
transformation à partir de la deuxième lettre :
VOTRE MOT? ALPHABETISATION
Ready
Alphabetisation
130 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
18
FAIRE-PART DE NAISSANCE
PLOT GOSUB RETURN
Comment écrire un mot ou une phrase en caractères de taille double ?
En occupant deux lignes au lieu d’une aurait dit Monsieur de la Palice ! C’est
en effet ce qu’il faut faire en prévenant sur chaque ligne que ce qui suit doit
être soit le haut soit le bas du texte. Voici un programme très court qui affi-
chera en gros caractères le texte que vous introduirez. Nous verrons après
une application plus complète.
18 CLS REMARQUES
20 INPUT'TEXTE À TRAITER":TS$
30 PLOT 10,3,CHR$S(12)+T$ Onécri
n écrit deux _… NA
4@ PLOT 18,4,CHR$C12)+T$ Hé ltacté 30 — affichage de la partie supérieure
en mémoire. 40 — idem pour le bas du texte
Vous obtiendrez …
20 — votre texte
Le texte apparaît au début des lignes 5 et 6 (celle du haut comptant pour
zéro).
. sur l'imprimante
deux fois la même
ligne et sur l‘écran
une seule ligne
mais en double
hauteur
TEXTE À TRAITER? IL ETAIT UNE FOIS..
IL ETAIT UNE FOIS..
IL ETAIT UNE FOIS..
IL ETAIT UNE FOIS.
Dans les lignes 30 et 40 c’est le code 10 qui est fourni à la fonction CHRS
pour obtenir la double hauteur. Si on place 14 comme code, on obtient en
plus un affichage clignotant, que nous ne vous montrerons pas.
Le faire-part de naissance
Ce procédé de grossissement est commode pour mettre en relief certaines
parties du texte. Nous allons l’employer pour faire ressortir le nom et le pré-
nom du nouveau-né dans le faire-part qui annonce sa naissance.
Tapez le nom de famille, le prénom et la date et vous obtiendrez une
carte facile à lire ! C’est encore une fois l’instruction PLOT qui va nous ser-
vir aussi bien pour écrire normalement qu’en double hauteur. Et puisque
le même travail revient plusieurs fois dans chacun des deux cas, nous fabri-
quons deux outils, deux sous-programmes, un pour chaque mode d’écriture.
Pour la taille normale il suffit d’afficher sur une ligne et de dire qu’il
faut poursuivre à la ligne suivante.
Pour la double hauteur, reprenons le programme de tout à l’heure en
ajoutant deux précautions. Si la ligne du haut porte un numéro pair tout
va bien, sinon le haut et le bas sont inversés : amusant ! Et puis il faut dire
aussi de poursuivre deux lignes plus loin.
Nous ferons appel à l’un de ces deux sous-programmes chaque fois qu’il
faudra afficher une ligne.
L'ART GRAPHIQUE EN BASSE RÉSOLUTION 131
è À
258
260
270
280
18 CLS
2@ PRINT'JE UAIS VOUS FAIRE UN JOLI FA
FRE=PART"
30 PRINT'"'DE NAISSANCE SI UOUS CONSENTE
49 PRINT'REPONDRE À TROIS PETITES QUES
TIONS ..”
5Q INPUT'NOM DES HEUREUX PARENTS "3,N$
68 INPUT"'PRENONM DU BEBE "3,P$
?7@ INPUT'ET IL EST NE QUAND CE PETIT "
:D$
80 CLS
30 L=3
100 T$="M, et Mme "+N$
119 GOSUB 248
128 T$-"ont la joie de Vous annoncer"
13Q@ GOSUB 210
149 T$='"la naissance de leur bebe"
150 GOSUB 210
160 T$-P$
17Q GOSUB 248
180 T$='"le "+D$
130 GOSUB 218
208 END
295 REM---------———
218 PLOT 2,i,7T$
220 L=L+]
230 RETURN
235 REM------——
248 L=2XCINT(L/2))+1
PLOT 2,L, CHR$(I1D)+T$
PLOT 2,L+1,CHR$CIR)+TS$
LeL+2
RE TURN
Deux lignes sur
l'imprimante qui
recopie la mémoire
sans plus.
JE VAIS VOUS FAIRE UN JOLI FAIRE-PART
DE NAISSANCE SI UOUS CONSENTEZ À
REPONDRE À TROIS PETITES QUESTIONS
NOM DES HEUREUX PARENTS ? RAUIS
PRENOM DU BEBE ? DESIRE
ET IL EST NE QUAND CE PETIT ? 31 DECEN
BRE, 1599
REMARQUES
20 à 40 — le mode d’emploi
30 à 70 — introduction des trois informations
90 — L fixe le début du faire-part : ligne 3 (à par-
tir du zéro)
100 — texte de la première ligne
110 — utilisation du sous-programme double
hauteur
120 et 130 — 2° ligne : simple hauteur
140 et 150 — idem pour la 3° ligne
160 et 170 — le prénom en gros
180 et 190 — la date en plus petit
200 — fin du programme, les sous-programmes
vont suivre
210 à 230 — sous-programme simple hauteur
210 — affichage d’une ligne
220 — position de la ligne suivante
240 à 280 — sous-programme double hauteur
240 — position du haut du texte : nombre impair
250 et 260 — le texte sur deux lignes
270 — position de la ligne suivante
M.et Mme RAVIS
M, et Mme RAUIS
M, et Mme RAUIS
ont la joie de Vous annoncer
La naissance de leur bebe
DESIRE
DESIRE
ie 31 DECEMBRE 1999
Une ligne en
double hauteur
sur l'écran
Un exemple ? Toute ressemblance avec des bébés étant réellement nés
serait purement fortuite !
CHAPITRE VII
DESSINS EN HAUTE RÉSOLUTION
Après la basse résolution, voici la haute résolution, celle qui vous permettra les tra-
cés les plus fins. Au cours de ce chapitre, on examinera quelques autres ordres
Basic relatifs aux boucles, afin de terminer sur un festival de tracés et de couleurs.
Principaux thèmes abordés
Haute résolution
HIRES
TEXT
Ecran haute résolution
Points d’affichage
CURSET
CURMOV
CIRCLE
DRAW
PATTERN
Cercles à géométrie variable
CHAR
POINT
FILL
Lignes de couleurs aléatoires
REPEAT UNTIL
IF... THEN
ELSE
IF... THEN... ELSE
Branchement conditionnel
Branchement inconditionnel
Opérateurs relationnels
AND
OR
NOT
Lecture d’une touche
KEY$
Attributs
Clignotement
Lignes doublées
CTRL/D
Caractères en double hauteur
HAUTE RESOLUTION
1. Placement du curseur
Nous allons abandonner la basse résolution (« LORES » vient de « /ow resolu-
tion », basse résolution) pour passer à la haute résolution, ce qui se dit en langage
oricien HIRES, de « high resolution ». Frappez donc, en mode direct :
| HIRES
Puis, faites un RETURN. L'écran noircit mais tout en bas subsistent trois lignes
blanches.
Les trois lignes blanches inférieures sont
destinées au texte, à vos ordres. Le reste de
l’écran appartient au graphique.
Lorsque vous êtes en mode HIRES, la frappe de CTRL/L ne vous ramène pas au
mode texte : elle efface uniquement les trois lignes du bas.
134 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Pour revenir au mode texte, frappez
TEXT simplement TEXT en mode direct, puis
RETURN.
Vous pourriez passer aux modes graphiques basse résolution en frappant LORES 6
ou LORES 1.
ECRAN Bien, mais que représente maintenant l’écran graphique ? En basse résolution,
HAUTE RESOLUTION
rappelez-vous, on l’a quadrillé selon une grille de 39 colonnes sur 27 rangées, soit
1 953 positions au total. En mode haute résolution, la « définition » est bien supé-
rieure car on dispose alors de 249 colonnes (numérotées de 9 à 239) et de 299 ran-
gées (numérotées de 9 à 199), soit un total de 48 999 positions : reportez-vous à
notre « grille », dessinée ici. Chaque position peut être assimilée à un point, tant
elle est petite.
POINTS D’'AFFICHAGE
HE)
Colonnes
Position
239,0
KE
Position
239,199]
Trois lignes
de texte
en plus
Cana blanc
La grille haute résolution.
DESSINS EN HAUTE RÉSOLUTION 135
CURSET
Il nous faut d’abord faire apparaître le
curseur. Pour cela, on va le placer avec l’ordre
CURSET, ce mot provenant de « cursor set »,
positionnement du curseur.
CURSET doit être suivi de trois valeurs, selon la syntaxe :
Ce, paramètre
rangée,nombre FD
{ras
obligatoires !
CURSET colonne,
Ce nombre est dit FD pour fond/devant, le fond étant tout simplement la couleur
du fond (de la page) et le devant, la couleur de l’encre (de l’écriture). Les codes sont
les suivants :
RE
dire qu’on efface, alors)
RE 77 HS
Semble ne rien faire car n’affiche rien,
mais met la position « colonne,rangée »
en mémoire
Le plus évident consiste à expérimenter. Le « point » central de l’écran a pour
coordonnées 129,19. On va y mettre le curseur ; passez d’abord en mode HIRES,
si ce n’est déjà fait, puis frappez ce texte qui viendra dans la fenêtre de texte de 3
lignes :
Peur «respecter» la couleur de
«l'encre» : du blanc
N'oubliez pas
les virgules
Ready.
CURSET 129
136
CURMOV
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Au RETURN, un tout petit point blanc (couleur de « l’encre »), c’est le curseur,
s’affiche au centre de l’écran. Maintenant, faites :
Pour une inversion
de couleur
Ready
CURSET 129,190 ,2
Au RETURN et avec le 2 qui inverse la couleur, on place un curseur noir en
129,199 ce qui revient à « éteindre » le curseur précédent. Rallumez-le avec un
CURSET 129,190,1 puis commandez :
«Ne rien faire sur l'écran»
Ready
CURSET 120,100,3
Au RETURN, rien ne se passe, sur l'écran ; en fait, le Basic s’est borné à mettre
l’ordre en mémoire. Si une instruction suivante se réfère au curseur, et bien que
celui-ci soit invisible, sa position sera prise en compte. Par contre, avec :
Passons à la couleur
Ready du fond
CURSET 120,100,0
et au RETURN, on affiche un curseur de la couleur du fond, ce qui revient à
« éteindre » notre point blanc.
Jusqu’à présent, on a donné les coordonnées exactes de la position du curseur
(129,199) ; c’est ce qu’on appelle des valeurs absolues. Or, on peut très bien dépla-
cer le curseur en se référant à sa position précédente ; par exemple, on va le dépla-
cer de 59 positions à droite et de 29 positions plus bas. Sa position absolue sera
donc de 129 + 59= 179 et de 199 +29 = 129, mais grâce à l’ordre CURMOV (de
« cursor move », déplacement du curseur) il suffira de donner des indications re/a-
tives selon la même syntaxe :
Ce sont des valeurs
«relatives»
Ready
CURMOV 59,20 ,1
Au RETURN, un second point s’affiche en 179,129.
Nous avons bien dit « un second ». Chaque
nouvel ordre CURSET ou CURMOW place
un nouveau point, qu’on appelle « curseur »
dans la mesure où on se réfère à lui pour
l’opération suivante.
CURMOV accepte des valeurs négatives, pour des « marches arrières » :
Déplacement à partir de
la position précédente
qui était 170, 120
Ready
CURMOV -190,-509 ,1
Au RETURN, un nouveau point s’allume en 179 — 199 = 79 et 129 — 59 = 79, ce qui
correspond à la commande CURSET 79,79,1.
DESSINS EN HAUTE RÉSOLUTION 137
2. Tracés
La haute résolution dispose de commandes de tracés très efficaces ; par exemple,
on peut tracer une circonférence avec une seule instruction CIRCLE. Nous allons
vous montrez la série d’ordre à introduire à la file, mais rappelez-vous que vous
n’en verrez qu’un à la fois sur l’affichage inférieur. Commencez par faire HIRES.
Même si vous êtes déjà en mode « haute
résolution », HIRES servira à effacer l’écran.
Puis, placez un curseur « invisible » au centre, en 129,199, grâce au troisième chif-
fre « 3 », comme on l’a vu. Enfin, faites CIRCLE en donnant le rayon et le « FD »
comme d’habitude :
he effacer l'écran
Positionnement d’un
HIRES curseur
CURSET 1290,100,3 invisible
CIRCLE 80,1
Tracé d'une conférence
de rayon = 80
Au RETURN, une circonférence de rayon 89 s’inscrit autour du curseur fictif, au
centre de l’écran. Notez la syntaxe de CIRCLE :
CIRCLE
En nombre de
points de l’image
CIRCLE rayon,nombre FD
Notez qu’au lieu de CURSET 129,199,3 vous auriez pu aussi bien écrire CURSET
129,199,9 avec le même résultat ici.
Pour tirer un trait, employez DRAW (« tracez », en anglais) ; DRAW trace un
trait à partir de la position du curseur et en se servant de valeurs relatives pour
savoir jusqu'où, selon la syntaxe :
Mettez un
1 pour
En nombre de ni nombre voir quelque
e lignes
colonnes chose !
DRAVW déplacement horizontal, déplacement vertical,nombre FD
Supposons que votre curseur se trouve toujours en 129,199 ; sinon, remettez-le à
cette place.
La commande CIRCLE ne déplace pas le
curseur. Par contre, DRAW le déplace et
l’amène au bout du nouveau trait tiré.
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
«De 60 vers
CE Ilez de 30 vers la rs
droite …» e Das)
Et tracer un trait reliant ce nouveau
point au curseur
——
Au RETURN, un trait oblique partant du centre de votre circonférence va s’ins-
crire, tel la grande aiguille d’une montre pointant 25 minutes.
Attention : maintenant, le curseur est au bout
de votre trait, donc en 129 + 39 = 159 et en
199 + 68 = 169, donc en 159,168.
Vérifions-le en traçant un carré, à partir de 159,169, donc ; notre carré va s’accro-
cher au bout de l’aiguille de montre :
Côté horizontal
DRAW 5
DRAW 9
9
Côté vertical,
à droite
DRAW
DRAW 1
he it Su EN Côté horizontal inférieur, ) __ __ _
Côté vertical de gauche,
vers le haut
Sur l’écran, vous avez maintenant ceci :
CURSET ES
120, 100, 3 ’
curseur
invisible
DRAW 30, 60,1
Le tout en
blanc sur fond
noir
Et notre
carré
DESSINS EN HAUTE RÉSOLUTION 139
PATTERN
DE on trace des tirets réguliers sur
100 points
Pour
réduire
CERCLES
A GEOMETRIE
VARIABLE
Appréciez la facilité des tracés et leur finesse ! Mais ce n’est pas tout : DRAVW trace
des traits continus mais, grâce à PATTERN, vous allez pouvoir tirer des traits dis-
continus. Il suffit de faire suivre PATTERN d’un nombre compris entre Ÿ et 255.
Pourquoi ces valeurs ? Si vous connaissez le
binaire, vous savez que, sur 1 octet, on peut
coder de # à 255. La structure du mot binaire
(ses # et ses 1) définit l’aspect du trait
à obtenir.
Mais sans connaître le binaire, faites quelques essais au hasard, ou plutôt, com-
mencez par des pointillés réguliers avec PATTERN 15 ; la séquence est la sui-
vante :
Pour effacer l'écran
HIRES
CURSET 29,100,3
PATTERN 15
DRAW 190,9 ,1
Plaçons le curseur invisible
en 20, 100
On définit la structure
du tireté …
Essayons maintenant un programme qui va tracer un cercle de rayon s’accroissant
continâment, puis décroissant jusqu’à disparaître, puis re-grandissant à nouveau,
etc. Pour cela, on va rédiger les instructions en mode texte. Pour revenir à ce mode,
frappez simplement TEXT, puis RETURN ; et entrez :
TEXT - Cureurnésble D
19 HIRES DT
29 CURSET 129,109 ,3 ASS
30 FOR N=1 TO 80 Pour ouvrir et étaler
49 CIRCLE N,1 | le cercle
59 NEXT N
69 FOR N=89 TO 1 STEP -1
79 CIRCLE N,9
80 TN
99
Ici, il faut effacer ; donc
le nombre FD est 0
On recommence
Faites RUN : l’écran passe en mode HIRES et notre cercle se forme, grandit
jusqu’à 89, puis commence à diminuer, etc. C’est parce qu’il faut effacer que, pour
le réduire, on a mis CIRCLE N,9 à la ligne 79. Arrêtez cela avec CTRL/C.
Essayons, maintenant, d’en faire autant avec des circonférences et non plus des cer-
cles (la circonférence est le périmètre d’un cercle ; un cercle est une surface !). Pour
cela, il faut effacer le cercle précédent après avoir affiché le suivant. Le programme
est sensiblement le même que ci-dessus ; on a ajouté deux lignes d’effacement, en
45 et 75, et modifié les lignes 39 et 69 (bien que la modification de 69 soit totale-
ment inutile : on aurait effacé une ligne inexistante, et après ? Mais c’est pour le
principe) ; ces modifications sont dûes au fait que le Basic refuse de tracer un cercle
de rayon ÿ et considère que c’est une erreur ; il ne faut donc pas qu’un calcul de
rayon donne zéro. Voici ce programme :
140
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
POINT
Pour effacer, en mode
croissant, le cercle
en précédent : (N — 1)
19 HIRES
29 CURSET 120,10
30 FOR N=2 TO 80
40 CIRCLE N,1
45 CIRCLE N-1,09
59 NEXT N
60 FOR N=79 TO 1 STEP -1
79 CIRCLE N,1
75 CIRCLE N+1,0
$ : NÉS à 0 Pour effacer, en mode
décroissant : donc le cercle précédent
était plus grand (N + 1)
Lancez-le, puis imaginez-en de plus savants. Par exemple, introduisez en 25 un :
Au RUN, vos cercles seront faits de points. Avec les grands rayons, vous voyez net-
tement un nouveau cercle se créer puis le précédent s’effacer.
Sachez encore que vous pouvez aussi placer des caractères en HIRES, à l’emplace-
ment du curseur, avec l’ordre CHAR (pour « character », mot anglais), mais sans
le suffixe dollars, ici, (ce n’est pas un nom de variable chaîne !). La syntaxe est :
PE.
0 pour standard
ou 1 pour
caractère
( graphique
CHAR code ASCIL,standard ou graphique,nombre FD
C'est le code ASCII
du caractère,
de 32 à 127
Comme
précédemment
C’est facile à essayer. Faites CTRL/C si vos cercles sont toujours en évolution,
puis :
* Pour effacer l‘écran
Pour afficher le caractère standard
de code 83
Au dernier RETURN, le caractère de code 83, toujours unS, se place au centre de
l’écran.
Enfin, vous pouvez demander au Basic de quelle « couleur » (fond ou encre) est un
point quelconque, précisément avec l’ordre POINT. Il vous répondra par le nom-
bre FD et donc par 4 pour fond, mais par — 1 pour encre ; encore faudra-t-il que
vous reveniez en mode TEXT pour pouvoir lire la réponse. Cela donnera :
DESSINS EN HAUTE RÉSOLUTION 141
On fait:
encre = 1
HIRES
CURSET 129,190 ,1
TEXT
PRINT POINT(129,100)
1
Retour au mode
texte, pour
pouvoir lire
la réponse
Interrogation et...
. Réponse : 1 (et même“)
car c'était bien «encre»
3. Couleurs en HIRES
Mettre de la couleur en HIRES est un peu plus subtil. Notons, tout d’abord, que
FILL l’ordre est FILL (pour « remplir »), et qu’il doit être suivi par 3 paramètres :
On travaille
par «paquet»
Attention :il y a
200 lignes
Comme de coutume :
mais vous devez donner ici de 6 colonnes :
le nombre de lignes à lyena on ee “ À
remplir à partir de la donc 240/6 = base GOûr
position du curseur 40
le «fond»
FILL nombre de lignes,nombre de blocs de colonnes,couleur
Ne vous préoccupez pas du second paramètre, pour l’instant, fixé à 1, et frappez :
CPour 1 ligne
D es Ce PP ne mon 5 Couleur :
rouge
Au RETURN, la ligne supérieure de l’écran passe en rouge. Pourquoi elle et elle
seule ? Puisqu’on n’a pas indiqué de CURSET pour positionner le curseur, celui-ci
s’est mis d’office en 9,0 ; d’autre part, le premier paramètre est 1, donc une seule
ligne s’est teintée. Si vous faites maintenant :
Vous allez colorier en vert les 8 lignes suivantes.
Dès lors que vous mettez des lignes en
couleur, le curseur se déplace de lui-même et
passe à la ligne suivante.
142 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Essayez de placer le curseur au début d’une ligne, par exemple la ligne 199, avec la
position 9,199, pour placer du cyan (couleur 227) :
Le curseur est
visible
CURSET 9,100 ,1
FILL 15,1,22
ds
Au RETURN, 15 lignes se colorent en cyan (bleu-vert) à partir de la ligne 199.
Bien, essayons, maintenant, de démarrer sur une colonne à mi-course :
» 1
Au RETURN, 3 lignes jaunes démarrent à partir de la colonne 128. Si vous refaites
ensuite un :
7 lignes en bleu vont se placer en-dessous, toujours à partir de la colonne 126.
Notez bien que c’est le curseur qui donne la
position de la colonne de départ, pour FILL.
Pour illustrer un peu les possibilités de couleurs de l’Oric, et faire une pause, entrez
et exécutez ce programme qui remplit de couleurs aléatoires toutes les lignes, de 9 à
LIGNES DE 199. Il n’est pas nécessaire de positionner le curseur au départ puisqu'il se place
COULEURS :,tomatiquement en 9,9 et que chaque ligne teintée le fait avancer d’une ligne :
ALEATOIRES
200 lignes
Choix aléatoire de
la couleur — — —
Faites RUN et vous obtiendrez une belle palette de lignes successives se suivant
dans des couleurs placées au hasard.
Passons maintenant au paramètre bloc de colonnes : il agit par « paquets » de 6
colonnes d’un coup ; chaque ligne de 249 colonnes comporte donc 49 « paquets ».
Attention : ce paramètre ne fonctionne pas
avec les couleurs ! Si vous le spécifiez, que ce
soit de 1 à 4, c’est toujours toute la ligne qui
va se colorier.
Par contre, il fonctionne avec des caractères spéciaux où le n° 63 représente un
pavé blanc. Essayez :
DESSINS EN HAUTE RÉSOLUTION 143
1 fois 6 colonnes
6,1,63 C'est du blanc,
dans ce mode
Au RETURN, un pavé blanc de 6 lignes sur 6 colonnes (1 « bloc ») se place à partir
de 9,9. Le curseur passe à la ligne suivante ; frappez alors, ce qui suit :
3 fois 6 colonnes
Tout ceci est
réellement en
blanc sur
fond noir !
FILL 6,6,63
Au lieu de 63, vous pouvez placer d’autres codes. Par exemple, le code 45 vous
donnera des verticales parallèles (FILL 9,12,45 par exemple), mais à l’évidence,
c’est le code 63 qui sera le plus utile aux débutants.
Pour créer une surface en couleur, on va mettre toute la bande voulue en couleur,
puis effacer (avec du noir) l’excédent. Par exemple, pour un rectangle :
On crée une bande en cyan
à partir de la colonne 40
Et on efface avec du
noir, à partir de la
colonne 80
Vous pouvez combiner des quantités de choses, maintenant, en HIRES, mais nous
devons encore évoquer le 3° paramètre de FILL qui ne sert pas uniquement pour la
couleur. Nous allons cependant, en « intermède », vous présenter quelques autres
ordres importants du Basic « classique » qui vont nous servir. Pour cela, on va
revenir au mode texte ; frappez donc TEXT, puis NEW.
4. Répétitions
On tire des nombres aléatoires entre Ÿ et 9 ; dès que l’on a tiré un as (un 1), on veut
que le programme cesse. Comment réaliser cela ? Tout simplement en indiquant :
répéter jusqu’à ce que le nombre soit un as. Le mot répéter s’écrit REPEAT, en
anglais, alots que jusqu'à se dit UNTIL :
144
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
«Répétez...»
REPEAT
UNTIL
IF... THEN
Ligne 45
«GOTO 20»
(Tirage d'un nombre aléatoire
AT p
T(RND(9)*10) « Jusqu'à ce
queN=1»
L N=1
RAVO, VOUS ETES UN AS !”
La ligne 19 REPEAT ordonne la répétition de toute la séquence incluse jusqu’à la
ligne UNTIL (la ligne 49, ici), tant que N ne sort pas à 1. Donc, tant que N n’est pas
1, on va revenir de 4ÿ à 19. Dès que N = 1, la boucle est terminée et le Basic passe en
59. Voici ce que donnerait un RUN :
RUN
9
Ê On a tiré enfin
3 un 1
9
1
BRAVO, VOUS ETES UN AS !
Il existe une autre façon de procéder, qui consiste à écrire « si N= 1, alors écrire
Bravo, vous êtes un as ! ». Le mot si se dit IF, alors se dit then ; c’est un peu plus
compliqué ; commencez par supprimer la ligne 19 et conservez 29,30 et 59 ; puis,
frappez 49 et 45, ce qui donne pour le programme complet :
_ Si N = 1, alors
2 N=INT(RND(9)x*x1 /
+ ANT N Van dé allez à 50...
40 IF N=1 THEN GOTO 59
45 GOTO 20
59 PRINT "BRAVO, VOUS ETES UN AS !
Ici, la ligne 49 renvoie en 59 à la condition que N=1 ; sinon, le renvoi est ignoré, et
le Basic passe à l’instruction suivante qui est 45, avec le renvoi au début. Voici
l’organigramme de ce programme :
Tirage du nombre
aléatoire N Ligne 20
Affichage de N Ligne 30
Ligne 40
Affichage du message final Ligne 50
Organigramme de la
boucle IF... THEN
DESSINS EN HAUTE RÉSOLUTION 145
ELSE
BRANCHEMENT
CONDITIONNEL,
INCONDITIONNEL
OPERATEURS
RELATIONNELS
NOT
Faites un RUN : le résultat est rigoureusement le même. Notons que, dans la ligne
49, on peut se permettre d’écrire tout simplement :
Le «GOTO» est implicite
Bien mieux, on peut cumuler les lignes 49 et 45 en ajoutant, en 49, une option sup-
plémentaire : « Si N = 1 alors 5ÿ, mais sinon aller en 29 ». Sachant que sinon s’écrit
en anglais ELSE, le programme complet devient :
Si N = 1, on va en 50, sinon,
on passe en 20
29 N=INT(RND(9)x10)
30 PRINT N
49 IF N=1 THEN 59 ELSE 29
59 PRINT "BRAVO, VOUS ETES UN AS!"
Un RUN donnera rigoureusement le même résultat.
L'ordre IF... THEN est appelé un
« branchement conditionnel », ce qui semble
évident : le branchement ne se fait que si la
condition est remplie.
Par opposition, GOTO est appelé un
« branchement inconditionnel ».
Dans ces programmes, la condition était l’égalité, avec N=1. Mais il peut y en
avoir d’autres, qui s’inspirent de l’arithmétique classique ou de la logique ; si vous
les avez étudiées, ils n’offriront pas de mystère pour vous. En voici la liste :
OPERATEURS RELATIONNELS
Notation Basic Signification Notation classique
Egal
Plus petit que
Plus grand que
Plus grand ou égal
Plus petit ou égal
Différent de
ET logique
OÙ logique
Négation logique
146
LECTURE
D'UNE TOUCHE
Dés que
vous avez
frappé
sur le
Z
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
5. Lecture d’une touche avec KEY$
L’ordre KEY$ (ce mot provient de « key », touche), ordonne au Basic de lire le cla-
vier, au cours de l’exécution d’un programme ; celui-ci « ramène » le caractère cor-
respondant à une touche précisément frappée à cet instant, sous forme d’une
chaîne d’un seul caractère d’ailleurs. C’est ce qui explique la présence du symbole
« dollar » au bout du mot key. La suite dépendra de ce que vous avez prévu.
Dans le programme suivant on demande, par exemple, si la touche frappée est un Z
et si oui, on affiche MERCI. Si non, on renvoie à ce même ordre de lecture du cla-
vier avec KEY$, ce qui donne :
19 PRINT "FRAPPEZ SUR LE Z"
20 IF KEY$="Z" THEN PRINT "MERCI"
39 GOTO 29
«Lis le clavier : si la touche frappée est le
Z, écris MERCI»
La ligne 19 affiche le message : Frappez sur le Z. A la ligne 29, on ordonne au Basic
de lire sur le clavier (KEY$), ce qu’il fait ; s’il lit un Z, il affiche MERCI. Sinon,
comme dans tout ordre IF... THEN, il passe à la ligne suivante qui le renvoie en 2ÿ
pour poursuivre la lecture du clavier. Au RUN, vous aurez :
Si vous frappez sur le Z, le mot MERCI s'affiche. Mais ensuite, le programme con-
tinue d’attendre, et à chaque frappe du Z, il ré-affichera un nouveau MERCI. Afin
de ne tenir compte que de la première frappe du Z, il faut compléter la ligne 29 avec
un END, ce qui signifie que dès que l’on affiche un MERCI, le programme prend
fin ; ce qui donne :
RINT “"FRAPPEZ SUR LE Z"
Us KEY$="Z" THEN PRINT "MERCI ":END
)
Rappelez-vous que le double-point ;
est le séparateur officiel
Notez bien ce point essentiel : le Basic va lire
le clavier à l’instant où il rencontre l’ordre
KEY$. II ramène le caractère (la chaîne de
un caractère, plus exactement) correspondant
à la touche qui est justement frappée à cet
instant. Si aucune touche n’est frappée, il
ramène une chaîne vide, (donc ”” ”’).
Voici un petit programme appliquant KEY$. Entrez-le, mais en le lisant, essayez de
deviner ce qu’il va produire ; si vous ne trouvez pas, exécutez-le, et lisez la suite :
ATTRIBUTS
DESSINS EN HAUTE RÉSOLUTION 147
Po ur effacer l’écran
C’est une chaîne vide : il
n'y a rien dans les guillemets
19 CLS
29 IF KEY$="" T 9
39 PLOT 18,12, "AIE"
49 WAIT
59 GOTO 19
PLOT : rappelez-vous, c'est
pour afficher à une position
imposée, ici colonne 18
et ligne 12
Au RUN, l'écran s’efface. Si vous frappez une touche, un « AIE » s’affiche un ins-
tant (WAIT 59) au centre de l’écran ! Faites CTRL/C pour stopper ce programme.
Que s’est-il passé ? A la ligne 29, on commande la lecture du clavier avec KEY$ ; le
Basic ne lit rien tant qu’une touche n’est pas frappée, ce qui correspond à une
chaîne vide. Dans ce cas, la ligne 29 se renvoie à elle-même et le Basic va continuer à
surveiller le clavier. Dès qu’une touche est frappée, la condition posée par le IF
n’est plus remplie et dans ce cas, le THEN n’est pas exécuté : le Basic passe à la
ligne suivante, qui commande l'affichage de AIE au centre de l’écran, puis on
attend 9,5 seconde (ligne 49), et enfin on revient en 19 pour effacer l’écran et
recommencer.
6. Les attributs
Après cette escapade, nous pouvons revenir à l’ordre FILL pour examiner son troi-
sième paramètre qui fixe la couleur, ou d’autres attributs. Ce paramètre va de ÿ à
127 inclus ; voici ses groupes d’actions :
24 à 31 inclus Agit sur la « fréquence de balayage »
de l’image : ne vous en servez pas !
32 à 127 inclus Sert à la définition de motifs graphiques
Dans ce tableau, la ligne « obscure » est celle des valeurs de 8 à 15. Les fonctions
sont les suivantes :
Caractères alphanumériques du clavier standard
Caractères graphiques (rappelez-vous du mode LORES 1)
Caractères standards, doublés (sur 2 lignes)
Caractères graphiques, doublés (sur 2 lignes)
12 Clignotement, caractères alphanumériques
13 Clignotement, mais caractères graphiques
14 Clignotement alphanumérique, doublé (2 lignes)
15 Clignotement graphique, doublé (2 lignes)
148
CLIGNOTEMENT
LIGNES DOUBLEES
CTRL/D
CARACTERES
EN DOUBLE
HAUTEUR
Calcul de
l'attribut
Placement
du
PRATIQUE DE L’'ORIC 1 ET 36 PROGRAMMES
Les deux nouveautés résident dans le clignotement et les caractères doublés, car on
a déjà examiné le reste. Commençons par le clignotement : on va placer un cercle et
le faire clignoter :
Création du cercle,
comme on l'a déjà vu) __ —
On ramène le curseur
en haut et à gauche …
. Et on fait
clignoter tout
l'écran (sur 199 lignes)
Vous pouvez mettre
ici 12 ou 13
Le second placement du curseur a été fait en 9,9 mais en réalité, il suffisait de le
situer de façon qu’il englobe le cercle. Essayez d’autres valeurs, en modifiant
ensuite le nombre de lignes à balayer (moins de 199, selon ce qu’il reste à partir du
curseur).
Pour examiner les caractères doublés, or va procéder autrement : vous les obtien-
drez soit avec le suffixe 19 ou 11, comme le montre le tableau ci-dessus, soit en
frappant au clavier CTRL/D. Frappez CTRL/D puis, pour expérimenter, frappez
FRERE JACQUES, ce qui donnera :
PTT
La ligne a été
doublée
FRERE JACQUES
FRERE JACQUES
Refaites CTRL/D pour revenir au mode normal. En fait, ce doublage de ligne
n’offre un réel intérêt que pour doubler des caractères de hauteur, soit en définis-
sant des caractères spéciaux (ce que l’Oric vous permet, mais on ne vous entraînera
pas jusque-là dans ce livre), soit à l’aide des caractères graphiques ou des comman-
des graphiques.
Exploiter tous ces ordres reste encore assez subtil, et ne peut venir que de l’expé-
rience car, malheureusement, nous ne pouvons vous en montrer ici toutes les com-
binaisons. À moins de vous proposer un programme qui en mêle aléatoirement plu-
sieurs : on va employer FILL pour remplir des rangées (de nombre aléatoire) avec
un code — suffixe aléatoire qui pourra fournir de la couleur, du clignotement, des
motifs graphiques. Ce programme offre, en outre, l’avantage d’incorporer un IF...
THEN et un REPEAT UNTIL. Vous trouverez à la suite quelques explications
nécessaires :
10 HIRES
29 REPEAT
E+ A=RND(9)*x128
40 IF A>23 AND A<32 THEN 309 .
CSS C=RND(9)x240 Remplissage
60 R=RND(9)+x100 en fonction
79 CURSET C,R,3 de À
80 FILL RND(9}*
90 UNTIL KEY$
DESSINS EN HAUTE RÉSOLUTION 149
La ligne 29 ordonne la répétition de toute la séquence allant jusqu’à 99. Le UNTIL
KEY$<> " “ signifie jusqu'à ce qu’une touche soit frappée ! Décomposons :
<> signifie différent de, et ” " est une chaîne vide ; or, dès qu’une touche est
frappée, elle se traduit par un caractère que sera « A », ou « B », ou l’espace donc,
une chaîne non vide ; donc, à ce moment, le programme stoppera.
En 39, on calcule aléatoirement la valeur de l’attribut À, qui viendra au bout de
FILL. Mais attention : si vous considérez notre tableau précédent, vous constaterez
que les valeurs 24 à 31 sont interdites. Par conséquent, on cherchera, à la ligne 49,
si À ne tombe pas dans cette gamme et si oui, on repart en 39 tirer une autre valeur.
Le calcul se fait ainsi : Si À est supérieur à 23 mais aussi (c’est le ET logique, qui
s’écrit AND) si À est inférieur à 32 (donc, s’il est compris entre 24 et 31), aller en
30.
Puis, en 59 et 69, on calcule aléatoirement le positionnement du curseur, colonne et
rangée sans « sortir » de l’écran, ce que le Basic identifierait à une erreur, et l’on
place ce curseur (invisible) en 79. Remarquez que les calculs de RND ne font pas
appel à l’entier de la valeur obtenue : les fonctions utilisant ces valeurs s’en char-
gent d’office.
Enfin, en 89 on commande le FILL à partir, donc, d’un curseur placé aléatoire-
ment, sur un nombre de rangées aléatoires (de 9 à 99, qui s’ajoutent donc à R cal-
culé auparavant) et avec un paramètre A aléatoire. Il est difficile de faire davan-
tage.
Lancez ce programme : vous allez voir des plaques de couleurs s’afficher, des
caractères graphiques apparaître en colonne surtout car le FILL est doté d’un 1 en
second paramètre, des clignotements se manifester... Le jeu changera constam-
ment, jusqu’à ce que vous frappiez sur une touche quelconque (résultat de la ligne
99). L’image se figera alors, mais les clignotements se poursuivront.
150 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
QUESTIONS SUR LE CHAPITRE VII
Vous en connaissez maintenant le principe !
. Dans le mode haute résolution, la définition de l’écran est de :
©] 299 rangées sur 24ÿ colonnes
[] 24 rangées sur 89 colonnes
. L'ordre CURSET sert à :
O Tracer des traits en blanc sur fond noir
[] Placer le curseur
. CURMOV positionne le curseur :
[ Selon des coordonnées absolues (colonne,rangée)
Cl Par rapport à sa position antérieure
. L'ordre CIRCLE doit être accompagné de paramètres précisant :
CO son centre, son rayon, et l’inévitable nombre FD
Ü] Sôn rayon et le nombre FD
. DRAV' tire un trait entre :
[] Deux points dont il faut donner les coordonnées en valeur absolue
[1 La position actuelle du curseur et un point dont on donne les coordonnées en
valeurs relatives à cette position
. L'ordre FILL sert :
D Uniquement à mettre de la couleur en HIRES
[] À mettre de la couleur, mais aussi à exécuter d’autres commandes selon l’attribut
(clignotement, motifs graphiques...)
. REPEAT UNTIL ordonne :
[La répétition d’une séquence tant que la condition posée n’est pas réalisée
C Une temporisation
. Si N=7, qu'affichera le programme suivant :
59 IF N>8 THEN 79
69 ? ’BONJOUR'’:END
79 ? AU REVOIR’’:END
[J] BONJOUR
[ AU REVOIR
. L'ordre KEY$, pour lire une touche :
[1 Stoppe l’exécution du programme pour attendre la touche
[] Lit ce qui est frappé à la volée, au moment où le Basic rencontre cet ordre, mais
n’arrête pas le programme
Réponses page 176
DESSINS EN HAUTE RÉSOLUTION 151
19
CHRONOMÈTRE DIGITAL PRÉCIS
STR$ VAL DEEK DOKE PEEK POKE
Pour un chronométrage précis, pourquoi ne pas se servir de l’horloge
qui cadence les opérations élémentaires de l’Oric !
Elle est contrôlée par un quartz et doit donc donner de bons résultats.
Le moyen le plus facile pour l’utiliser est l’instruction WAIT et c’est ce que
nous avons déjà fait. Mais pour afficher il faut au minimum une instruction
PRINT, ce qui va fausser le chronométrage. Une autre méthode consiste à
interroger un ou deux octets de mémoire vive qui sont liés à l’horloge. C’est
ce que nous allons faire :
1 — ’’Gratouiller”? les octets 630 et 631 pour fixer l’heure de départ.
2 — Observer la variation du contenu de ces 2 octets.
3 — Afficher ce contenu.
De cette façon, on obtient directement un comptage à rebours au cen-
tième de seconde, sur une durée maximum de 65 535 centièmes de secondes,
soit près de 11 minutes.
CLS REMARQUES
INPUT'"'HEURE DE DEPART 1/1@0 S'" ;HD
30 — point de départ du compte à rebours
DOKE 630,HD
T=DFEK(630) 40 — un instant parmi d’autres
PLOT 10,3, STR$#(T) 50 — affichage
GOTO 40
Fournissez comme heure de départ, 1 000, ce qui représente 10 secon-
des. On observe un défilement rapide des 2 chiffres de droite, et celui de
gauche qui bat la seconde. Mais nous n’avons rien prévu pour arrêter le
chrono, et ce qui se passe en-dessous de zéro peut surprendre !
Arrivé à zéro les deux octets reprennent chacun la valeur la plus grande :
255, ce qui donne à notre compteur une nouvelle jeunesse : (255 x 256) +255
soit 65 535. Et c’est reparti pour 655 secondes 35/100 !
Les chiffres s’affichent en vert, et pourtant on ne l’a pas demandé !
T est un nombre positif, et à la place du signe + se trouve un caractère
invisible, dont le code est 2.
Or c’est justement le code du vert comme couleur d’encre.
HEURE DE DEPART 1/100 S? 1000
(au bout de
3 s 67/100
D
Nous avons employé deux fonctions aux noms barbares qui ne sont pas
du Basic courant : DEEK et DOKE.
Elles concernent toutes deux une paire d’octets voisins, DEEK pour lire
et DOKE pour écrire.
152 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
A la ligne 30 on met la valeur de HD, dans les octets 630 et 631.
Si HD vaut 1 000, l’octet 631 recevra 3 et l’octet 630 : 232, car
3x256+232=1 000.
Puis grâce à DEEK (630) on lit ce qui se trouve dans ces 2 octets et le
résultat est : (contenu de 631)+256 + (contenu de 630).
Leur rôle est aussi de lire (PEEK) et d’écrire (POKE), mais un octet
à la fois. PEEK (630) fournirait la partie basse du compteur et PEEK(631)
la partie haute. POKE 630,0 ne remettrait à zéro que la partie basse de notre
horloge
Chronomètre digital avec arrêts provisoires et temps intermédiaire
:DEPART
“ARRET Le menu du
:RATTRAPANTE prochain programme
:REMISE À ZERO
TI M NN D Ü
:EIN
Ce sont les 5 fonctions d’un chronomètre digital enrichi, avec affichage
séparé des secondes et des centièmes.
Ce programme comporte 5 boucles dans lesquelles on évolue grâce aux
5 lettres DASZEF, et nous avons voulu construire ces boucles comme des blocs
d'instruction dont voici la liste :
Répéter
jusqu’à ce qu’on frappe D
Répéter
départ
Le chrono tourne Répèter
Répéter
lecture et affichage du temps
lecture du temps
jusqu’à ce qu’on frappe A
Redémarrage avec
ou sans rattrapage Répéter
lecture du clavier
jusqu’à ce qu’on frappe D ou F ou S ou Z
si on a frappé D, on repart où on s'était
arrêté jusqu’à ce qu’on ait frappé
autre chose que D et S
Redémarrage à
zéro
jusqu’à ce qu’on ait frappé F
Fin
DESSINS EN HAUTE RÉSOLUTION
153
19
28
30
4û
50
6@
20
8a
30
11Q
100
119
12a
130
148
150
168
170
180
190
2@û
210
220
230
240
250
CLS :PAPER 7
PLOT2,4, "D:DEPART"
PUOT2:55 AIARRET"
PLOT2,6,"S:RATTRAPANTE"
PLOT2,7,"2:REMISE À &ERO"
PLOT2,8,"F:FIN"
PLOT 1,2,17
PLOT 10,2,23
REPEATUNTIL KEY$="D"
DOKE 639, 65535
REPEAT
DOKE 630,65535
REPEAT
REPEAT
T=DEEK(630)
T$=" MHSTRÉ(6S5S53S-T)
LELENCTS)
S$=MIDS(T$,L-4,3)
CH=RIGHTSCT$,2)
PLOT 2,2,S$
PLOT 5,2, ":"+C$
T=DEEK(630)
UNTIL KEY$="A"
REPEAT
KF=KETS
UNTIL K$="D" K$="S" 0
OR K$="F" OR
R Kg$="2"
260
27@
289
THEN DOKE 630,7T
AND K$>"S"
JF K$="D"
UNTIL K$O"D"
UNTIL K$="F"
REMARQUES
20 à 60 — le mode d’emploi
70 à 80 — un beau cadre rouge
90 — attente : à *’D’’ on part
100 à 280 — boucle pour des chronométrages suc-
cessifs avec remise à zéro
110 — remise à zéro
120 à 270 — boucle pour redémarrage sans remise
à zéro
130 à 230 — boucles de chronométrage jusqu’à ce
qu’on tape D
140 — T : le contenu du ’’décompteur’””
150 — T$ : la chaîne contenant 65 535 —T pour
compter à partir de zéro et non pas décompter, et
3 espaces à gauche pour cadrer
160 — la taille de T$
170 — les secondes
180 — les centièmes
190 — affichage des secondes
200 — affichage d’un : et des centièmes
210 — mise en mémoire du temps qui servira si on
arrête le chrono (arrêt de jeu)
230 à 250 — boucle d’attente jusqu’à ce qu’on
relance le chrono avecw D, S, Z, ou F
240 — observation du clavier : si une touche est
frappée, son code va dans R$
260 — si on tapé D, on repart sans rattrapage
L’emploi de la structure REPEAT... UNTIL a l'avantage de ne pas faire
appel aux numéros de lignes comme le fait GOTO...
Ceci est commode en particulier si on veut placer une portion de pro-
gramme dans une autre, comme ce sera le cas si vous souhaitez réutiliser
ce programme comme auxiliaire dans vos programmes nécessitant un
chronométrage.
154 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
20
CARACTÈRES ACCENTUÉS
PEEK POKE READ DATA
On peut redessiner n’importe quel caractère du clavier en respectant une
convention fixée par le constructeur. Nous allons le faire pour combler une
lacune : l’absence de caractères accentués. Il y a deux possibilités principa-
les : modifier certains caractères standards ou toucher au jeu de caractères
semi-graphiques. Laissons de côté ces graphiques carrés pour remplacer plutôt
certains caractères du jeu standard peu employés dans un texte.
Caractère Code Nouveau
existant ASCII caractère
64
35
94
95
19 CLS :PRINT :PRINT'CREATION DE CARACTE
RES ACCENTUES"
28 GOSUB 129 REMARQUES
3@ PRINT:PRINT'"'UOICI LES CARACTERES OB 20 — appel du sous-programme
TENUS :" de création
4Q PRINT 50 à 70 — boucle d’affichage
des caractères obtenus
50 FOR C=1 TO 12
60 PRINT CHR$CACC)I);" |";
78 NEXT C
88 PRINT
100 END
DESSINS EN HAUTE RÉSOLUTION
155
118
128
130
140
125;
158
168
170
180
190
208
21@
220
230
248
250
260
270
288
230
300
310
329
330
340
350
360
370
DIN AC12)
DATA 64,35,94,95,124,92,91,93, 123,
60,62
FOR C=1 TO 12
READ ACCI:NEXT C
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
16,8,28,2,39,34,30,0
8,20,28,2,30,34,30,0
4,8,28,34,60,32,30,0
16,83,28,34,60,32,30,0
8,20,28,34,60,32,30,0
28,0,28,34,60,32,30,0
8,20,0,24,8,8,28,9
0,20,0,24,8,8,28,0
8,29,28,34,34,34,28,0
8,20,0,34,34,34,28,0
16,8,0,34,34,34,28,0
DATA 0,0,14,16,16,16,14,4
FOR C=] TO 12
FOR L=Q TO 7
READ D
POKE 46080+ACC)x8+L,0D
NEXT L
NEXT C
RE TURN
REMARQUES
120 à 370 — sous-programme de création des nou-
veaux caractères
130 — réservation pour le fichier des codes
140 — les codes des caractères à redessiner
150 à 160 — boucle de lecture de ces codes
180 à 290 — le ‘’dessin'’ des 12 caractères
300 à 350 — boucle pour chaque caractère
310 à 340 — boucle pour les 8 lignes d’un caractère
320 — lecture pour une ligne
330 — modification pour cette ligne
L’exécution du programme donne ceci :
CREATION DE CARACTERES ACCENTUES
VOICI
LES CARACTERES OBTENUS
et à partir de maintenant si vous tapez @ c’est un à qui s’affiche, pour #
vous obtiendrez 4...
Ceci veut dire que vous pourrez créer, stocker, comparer et afficher du
texte contenant ces 12 caractères greffés.
Pour illustrer la démarche suivie, prenons le cas du caractère à que nous
dessinerons en respectant la grille imposée de 8 lignes et 6 colonnes :
156 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
16
28
Valeurs à
mémoriser
N° de
li
igne 30
34
30
Ce dessin est mis en mémoire aux emplacements voulus grâce à
POKE 46080 + A(C)+8,16
POKE 46080 + A(C)+8 + 7,0
on a choisi pour à le code 64 ; ce caractère sera donc obtenu grâce à la
touche
Ainsi pour écrire bérêt il faudra taper b A rit
Si vous utilisez ceci avec des programmes où figurent des caractères modi-
fiés, le nouveau symbole sera affiché, mais le code ASCII restant le même,
Basic s’en moque :
un <Ssera noté à mais correspondra bien à ’’inférieur à
Pour revenir au jeu de caractères ’’normaux””, utilisez le bouton de réi-
nitilisation ou tapez CALL 555.
7.1
DESSINS EN HAUTE RÉSOLUTION 157
21
LES CARACTÈRES SEMI-GRAPHIQUES À LA LOUPE
HIRES CURSET CHAR DRAW
En fin d’ouvrage, on trouvera une liste des caractères du jeu alterné
(numéro 1) dont le code est compris entre 32 et 95. Voici un programme
qui affiche le caractère choisi et reproduit les points qui le compose dans
une grille très agrandie formée de 8 cases dans le sens de la longueur et 6
cases dans la largeur.
Une grande case :
un «point» en
basse résolution
Une petite case : })
un point en
haute résolution
Les caractères obtenus seront composés de cases noires et blanches for-
mant ce quadrillage :
HIRES
FOR *X=90 TO 126 STEP 6
CURSET X,90,1:DRAUN 0,48,1
NEXT X
FOR Y=39 TO 138 STEP 6
CURSET 9G,Y,1:DRAWN 36,0,1
NEXT Y
FOR CT=32 TO SS
CURSET 10,10,
CHAR CT,1,1
PRINT"'CODE :":PRINT CT
FOR Y=1@ TO 17
FOR X=19 TO 15
P=-POINT(X, Y)
CURSET XX6+31,YX6+30,3
CHAR 43,0,P
NEXT X
NEXT Y
CURSET 18,10,3
CHAR CT,1,2
NEXT CT
END
REMARQUES
20 à 70 — dessin de la grile
20 à 40 — les barres verticales
50 à 70 — puis les barres horizontales
90 à 240 — boucle pour chaque caractère
100, 110 — affichage du caractère en haut à gauche
120 — son code est écrit dans les 3 lignes du bas
140 à 200 — boucles de remplissage de la grille
160 — P vaut 1 pour un point allumé, zéro sinon
170, 180 — marquage d’une croix lorsque P vaut 1
220, 230 — effaçage du caractère en haut à gauche
avant de passer au suivant pour éviter une
superposition
158
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
exemple : voici la forme du caractère dont le code est 70.
Le caractère graphique
en grandeur nature
Son agrandissement
Passez-les systématiquement en revue (codes 32 à 95) et vous compren-
drez mieux comment on passe d’un caractère au suivant.
Au-delà de 95 le spectacle est moins varié : on retrouve par exemple le
même caractère 16 fois de suite ! Puis la série recommence à partir de 160.
DESSINS EN HAUTE RÉSOLUTION 159
22
CRÉATION DE MOTIFS
HIRES CURSET CHAR DRAW DEF FN
Le clavier de l’Oric comporte les symboles usuels tels que lettres de l’al-
phabet, chiffres et signes de ponctuation, mais on peut encore créer d’au-
tres symboles qui occuperont la même place sur l’écran qu’une lettre ou un
chiffre, et pourront être manipulés de la même façon. La création de tels
motifs est décrite dans le manuel fourni avec le micro-ordinateur, et vous
pouvez en trouver plusieurs exemples dans le présent ouvrage (graphisme,
jeux d’animation..….).
La démarche à suivre n’est pas très difficile, mais demande un soin atten-
tif et une certaine habitude. Voici un programme qui vous facilitera le tra-
vail : vous dessinez le motif souhaité en noircissant les cases d’une grille agran-
die, et le résultat obtenu est une instruction DATA décrivant le motif. Au
fur et à mesure que vous le dessinez sur la grile, le futur motif apparaît sur
l’écran en grandeur nature. Ceci permet des retouches afin de parvenir à l’effet
recherché. Il suffira ensuite de prévoir dans votre programme la lecture des
informations contenues dans l’instruction DATA pour disposer du motif
comme s’il avait toujours existé !
1Q HIRES
20 FOR X-9@ TO 126 STEP 6
30 CURSET *%,90,1:DRAW 0,48,1
aQ NEXT x
5Q FOR Y-90 TO 138 STEP 6
60 CURSET 90,7Y,1:DRAW 36,0,1
7Q@ NEXT Y
80 :
98 INPUT"'JEU" ;J
REMARQUES
10 à 70 — tracé de la grille
100
110
120
130
140
150
160
Lit
170
180
1930
200
210
220
INPUT"CODE" CT
CURSET 18,10,0
CHAR CT,J,1
FOR Y=1@ TO 17
FOR X=1@ TO 15
IF POINT(X,;Y)=-1 THEN CURSET XXx6+3
X6+30,3:CHAR 43,0,1
NEXT x
NEXT Y
DEF FNCCC)=CXx6+85
DEF FNL(L)=LXx6+84
L=l:C=1
20 à 40 — boucle de tracé des traits verticaux
50 à 70 — boucle de tracé des traits horizontaux
90 — choix du jeu de caractères 0 ou 1
100 — code ASCII du caractère à modifier
110, 120 — affichage de ce caractère tel qu’il est
140 à 180 — boucle d’analyse de caractère et repré-
sentation avant agrandissement dans la grille
160 — pour chaque point formant le caractère, on
marque une croix (+) dans la case correspondante
200 et 210 — définition des fonctions de position
du curseur dans la grille
220 — position de départ : en haut à gauche
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
REPEAT
A=POINTCCrS,L+r9)
CURSET FNCCC)I,FNLCL),3
CHAR 43,G,-NOT A
WAIT 5
GOSUB 538
CHAR 43,0, -A
WAIT 5
UNTIL T$=CHR$(13)
DIN FC8)
FOR L=1 TO 8
F(L)=@
370 FOR C=1 TO 6
380 F(L)=2XF(L)I-POINTC(C+9,L+9)
39@ NEXT C
a@@ NEXT L
410 :
420 TEXT
43Q@ PRINT:PRINT'UOICI L?INSTRUCTION DA
TA NECESSAIRE POUR OBTENIR LE MOTIF
440 PRINT :PRINT"DATA ‘;
45@ FOR L=1 TO 8
468 PRINT FCL)3;",";
479 POKE 460880+1824XJ+CTX8+L-1,FCL)
480 NEXT L
498 PRINT CHR$C8);" "
508 PRINT:PRINT:PRINT"MOTIF OBTENU :";
510 IF J=Q THEN PRINT" "3;CHRS$SCCT)J ELSE
PRINT CHR$C27) ;"I";CHRS$SCCT)J
520 END
530 :
540 RENM
550 T$=KEYT$
560 IF T$<>"" THEN CODE=ASC(TS$) ELSE R
E TURN
520 IF T$="Q" THEN CURSET C+9,L+9,@:CU
RSET FNCCCI,FNLCL),3
58Q IF T$="1" THEN CURSET C+9,L+9,1:CU
RSET FNCCC), FNLCL),3
590 IF CODE<8 OR CODE>11 THEN RETURN
608 C=C+(CODE=8)-(CODE=S)
610 L=L-CCODE=18)+CCODE=11)
620@ IF C<I1 THEN
630 IF C>6 THEN
648 IF L<i THEN
65Q IF L>8 THEN
660 RETURN
REMARQUES
240 à 320 — répétition jusqu’à ce qu’on tape
Preturn””
250 — mémorisation de l’état de la case allumée
ou éteinte
260 — on place le curseur dans la case (coin supé-
rieur gauche) sans modifier ce qui s’y trouve
270 à 310 — clignotement du signe +
270 — effacement du +
280 — temporisation
290 — observation du clavier et modification d’une
case : utilisation du sous-programme
300 — affichage du +
310 — temporisation
340 à 400 — calcul des valeurs définissant le nou-
veau motif
340 — réservation pour le fichier des codes de cha-
que ligne
350 à 400 — boucle sur les lignes
360 — remise à zéro de la valeur caractéristique
d’une ligne
370 à 390 — boucle sur les 6 cases d’une ligne
380 — calcul progressif de la valeur
420 à 510 — résultat : ce qu’il faut faire pour recréer
le motif plus tard
440 à 480 — écriture de l’instructin DATA et mise
en mémoire des valeurs définissant le nouveau motif
REMARQUES
550 à 660 — sous-programme de déplacement dans
la grille et de modification de celle-ci
550 — mémorisation d’une frappe de touche
560 — si on a appuyé sur une touche, CODE con-
tient son code ASCII, sinon: fin du
sous-programme
570 — cas du zéro : effaçage du point dans le petit
caractère et de la croix dans la grille
580 — cas du 1 : allumage du point et d’une croix
590 — fin du sous-programme pour les codes
autres que ceux des 4 flèches
600 — nouvelle position horizontale : c diminue de
1 si on a tapé —, c augmente de 1 pour —, c ne
change pas pour les 2 autres flèches
610 — même démarche pour la nouvelle position
verticale : ? L diminue de 1, * L augmente de
1, sinon L ne change pas
620 à 650 — blocage à gauche, à droite, en haut
et en bas
660 — fin du sous-programme
DESSINS EN HAUTE RÉSOLUTION 161
Exemple :
Pour créer un coureur à pied à la place du motif €, il faut modifier
le caractère 64 du jeu n° 0:
Avant la
modification
JEU? @
CODE? 91
Le crochet apparaît alors en haut à gauche de l’écran, puis une grille
se remplit de croix simulant les points de ce crochet. Une croix clignote dans
la case du coin supérieur gauche de la grille.
Vous pouvez déplacer cette croix dans les 4 directions afin de noircir
les cases voulues (en tapant 1) ou de les blanchir (touche zéro). Pour termi-
ner, tapez la touche RETURN.
Après la modification
Ce qu'on obtient
quand on tape Return
VOICI L?INSTRUCTION DATA NECESSAIRE
POUR OBTENIR LE MOTIF
DATA 8 ,28 ,9 ,30 ,40 ,14 ,17 ,32
MOTIF OBTENU : #
162 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Le modèle réduit est mieux que celui de la grille !
A partir de maintenant, la touche [ correspond au coureur, et pour
le recréer dans un programme après extinction de l’Oric, il suffit d’insérer
ces cinq lignes.
50028 DATA 8,28,9,30,40,14,17, 32
5081@ FOR L=} TO 8
50020 READ U
50030 POKE 46080+91*8+L-1,U
50040 NEXT L
Et voici cinq possibilités pour faire apparaître le coureur :
— taper Ê , mais ça n’est valable qu’en mode immédiat.
— taper :
PRINT "["
PLOT 10,15,91
E de TEXT
ce LORES D CURSET 25,18, En mode
CHAR 91,0,1 haute résolution
DESSINS EN HAUTE RÉSOLUTION 163
23
COURBE DIGITALISÉE
HIRES CURSET DRAW
Pour représenter, à l’aide d’une courbe, un relevé d’observations, par
exemple la taille d’un enfant selon son âge, il faut une préparation afin d’uti-
liser raisonnablement la feuille de papier, puis vient le report des points aux
emplacements convenables ! Nous allons confier au programme suivant la
préparation du travail, et il suffira de taper les coordonnées de tous les points
pour qu’ils apparaissent enfin sur l’écran, à leur place respective.
18 CLS:PRINT
20 PRINT"TRACE D’UNE COURBE DIGITALISE
30 INPUT'"'NOMBRE DE POINTS" ;NP
40 DIM XCNP),YCNP)
90 :
69 FOR I=1 TO NP
7@ PRINT "POINT NO ";1];
80 INPUT'X , Y';xXCI),YCI) REMARQUES
39 NEXT I
108 :
119 PRINT :PRINT'RECHERCHE DES EXTREMES
40 — réservation pour les fichiers x et y des coor-
données des points
60 à 90 — boucle d'introduction de ces coordonnées
120 — réalisation du sous-programme de recher-
12@ GOSUBR 240 che des extrêmes
130 : |
140 HIRES et ee passe au mode haute résolution, blanc
150 FX=239/CXS-XI) 150, 160 — facteurs d'échelle horizontaux et
160 FY-199/CYS-YI) verticaux
178 FOR I=1 TO NP 170 à 210 — boucle de tracé
189 XE=CXCI)I-XIDXFX 180, 190 on horonite di tadeai
, — position rizon rt
198 YE=CYS-YCIDDXFY Dés ORNE EN,
208 CURSET XE,YE,1
210
220
230
240
200 — allumage du point
164 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
REMARQUES
XI=X(1)
CE 260 à 390 — sous-programme de recherche des
*XS=X(1) extrêmes
YI=Y
I GE 260 à 290 — amorce de la recherche : la première
YS=Y(1) valeur x et y
310 à 360 — boucle d’analyse des valeurs suivantes
ee De 380 iont 1 1 tit (ll
. — si on trouve une valeur plus petite que celle
IF XCIJD<XI THEN XI=XCI) qu’on a retenue pour d'indtauit, cu Es qu’on
IF XCIDDXS THEN XS=X(I) prend comme étant la plus petite
IF YCID<YI THEN YI=Y(CI) 330 à 350 — idem pour les trois autres extrêmes
IF YCID2YS THEN YS=YCI) 380 — si la courbe est une ligne horizontale ou ver-
NEXT I ticale, on ne peut pas la cadrer dans l’écran !
IF XI=XS OR YI=YS THEN PRINT'REUOI
R LES COORDONNEES" :END
332 RETURN
Exemple :
Représentation graphique de la taille d’un individu en fonction de son
âge.
Age (x)
années 12
Taille (y)
cm 130 |135 |145
Nombre de points : 17
TRACE D'UNE COURBE DIGITALISÉE
NOMBRE DE POINTS? 17
POINT NO X Y? 9,50
POINT NO Y? 1,72
POINT NO Y? 7,85
POINT Y? 3.92
*? 4,100
Y? 5,106
Y? 6,114
Y? 7,118
Y? 8,124
Y? 3,130
Y? 19,135
POINT NO
POINT NO
POINT NO
POINT NO
POINT NO
POINT NO
1 (0 © NU O Ji B WU Nr
CN MAC EE NC 'X
DESSINS EN HAUTE RÉSOLUTION 165
12,145
14,169
16,164
18,165
20,166
25; 166
RECHERCHE DES EXTREMES
AUTRE POSSIBILITÉ DE TRACÉ
On utilise pour le tracé précédent la résolution graphique maximum de
lOric. Si l’on désire des croix au lieu de points, il suffit de modifier’ ainsi :
140 HIRES REMARQUES
159 Fx=237/CXS-X 1) 150, 160 — facteur d’échelle horizontal et vertical
160 FY=-197/CYS-YI) en s’interdisant de placer les centres de croix sur
les bords de l’écran
170 FOR I=1 TO NP
180 XE=CXCI)2-XIDXFX+1
180, 190 — position horizontale et verticale sur
l’écran après décalage de 1 pour éviter le bord gau-
190 YE=C YS-YCID)DXFY+1 che et le haut de l’écran (il faut pouvoir les tracer
208 CURSET XE-1,YE, 1:DRAU 2,9,1 ces croix !)
205 CURSET XE >: ŸYE-1,1 :DRAU B,2,1 200 — la branche horizontale de la croix...
219 NEXT I 205 — et la branche verticale
166
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Avec les mêmes données que précédemment on obtient :
Comment tracer une croix en forme de X au lieu d’un plus (+) ? C’est
facile, il suffit de remplacer les lignes 200 et 205 par :
200 CURSET XE-—1, YE-—1, 1 : DRAW 2,2,1
205 CURSET XE-—1, YE+1, 1 : DRAW 2,—2,1.
Nous avons entré les données dans l’ordre croissant, mais puique le pro-
gramme détermine les extrêmes, vous pouvez entrer les vôtres dans n’im-
porte quel ordre, à condition d’alterner la position horizontale et la position
verticale.
DESSINS EN HAUTE RÉSOLUTION
167
24
COURBE PARAMÉTRÉE
HIRES CURSET DRAW PATTERN DEF FN
Il est parfois plus facile de représenter une courbe en reliant l’évolution
des coordonnées horizontale et verticale à celle d’un paramètre auxiliaire.
Le cercle en est un exemple célèbre : on obtiendra des points régulièrement
espacés si l’on fait varier régulièrement la position angulaire de ceux-ci. Il
faut alors définir deux expressions : celle de l’abscisse (portée ici horizonta-
lement) et celle de l’ordonnée (position verticale). Le programme aura éga-
lement comme tâche d’utiliser au mieux l’écran pour le tracé.
CLS : PRINT
PRINT'TRACE D’UNE COURBE PARAMETREE
DEF FNXCTJ=COSCT)
DEF FNYCTIJ=SINCT)
INPUT'UALEUR MIN. DU PARAMETREM;TI
INPUT'"UALEUR MAX. DU PARAMETREMSTE
INPUT'NOMBRE DE POINTS" 3;NP
DIM XCNPJ,YCNP)
PRINT:PRINT'"CALCUL DES COORDONNEES
TeTI
TPAS=CTF-TID/CNP-1)
FOR I=1 TO NP
KCID=FNXCT)
YCIDD=FNYCT)
T=T+TPAS
NEXT I
PRINT:PRINT'"'RECHERCHE DES EXTREMES
GOSUB 348
HIRES
FX=239/CXS-XI)
FY=193/CYS-YI)
FOR I=1 TO NP
XE=CXCIDI-XIIXFX
YE=CYS-YCIDIXFY
CURSET *%E,YE;,1
REMARQUES
10 — définition de l’expression de calcul de la posi-
tion horizontale d’un point (abscisse)
30 — définition de l’expression de calcul de la posi-
tion verticale d’un point (ordonnée)
50, 60 — introduction des limites de variation du
paramètre
70 — introduction de la finesse du tracé (nombre
de points)
80 — réservation de mémoires pour les fichiers des
coordonnées
20 — calcul de l’écart entre deux valeurs successi-
ves du paramètre
130 à 170 — boucle de calcul des coordonnées des
points
200 — utilisation du sous-programme de recherche
des extrêmes parmi les valeurs des abscisses d’une
part et celles des ordonnées d’autre part
230, 240 — calcul des facteurs d’échelle
250 à 290 — boucle de tracé des points
168 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
348 XI=xC1)
350 XS=X*x(1)
360 YI=Y(1)
378 YS=Y(1)
280 + 240 à 370 — amorce de la recherche : la première
330 FOR I=1 TO NP valeur
408 IF XCI)D<XI THEN XI=XCI)
4]1@ IF XCID>XS THEN XS=XCI)
REMARQUES
340 à 430 — sous-programme de recherche des
extrêmes
390 à 440 — boucle d’analyse des valeurs suivantes
400 — si on trouve une valeur plus petite que celle
qu’on a retenue pour l'instant, c’est elle qu’on
4a2Q IF YCID<YI THEN YI=YCI)
43@ IF YCID>DYS THEN YS=Y(I) prend comme étant la plus petite
44Q@ NEXT I 460 — puisqu'on veut utiliser au maximum l'écran,
la courbe ne peut se réduire à une droite horizon-
tale ou verticale : rejet
asS@ :
a6Q IF XI=XS OR YI=YS THEN PRINT'REUODI
R LES COORDONNEES" :STOP
49Q RETURN
Exemple :
Pour tracer un cercle, définissons les expressions pour les positions hori-
zontales et verticales des points
30 DEF FNXCT)=COSCT)
40 DEF FNYCTI=SINCT)
Avec les limites zéro et 2+PI et 200 points, on obtient ce cercle aplati :
TRACE D’UNE COURBE PARAMETREE
VALEUR MIN. DU PARAMETRE? @
VALEUR MAX. DU PARAMETRE? 6.28
NOMBRE DE POINTS? 200
Ce que vous
devez taper
CALCUL DES COORDONNEES
RECHERCHE DES EXTREMES
DESSINS EN HAUTE RÉSOLUTION 169
Pour comprendre pourquoi on obtient un ovale sur l’écran plutôt qu’un
cercle, il faut se rappeler que notre but était d’occuper au mieux tout l’écran,
et puisque celui-ci est plus large que haut... Le remède à ceci consiste à se
priver d’une bande verticale de l’écran afin de travailler dans un cadre carré
en modifiant le facteur d’échelle horizontal déterminé à la ligne 230. Si, de
plus, on souhaite centrer la figure, il faut modifier le calcul de la position
horizontale des points à la ligne 260 :
220 HIRES
230 FX=180/CXS-XI)
248 FY=199/CYS-YI) REMARQUES
25Q@ FOR I=1 TO NP 230 — le facteur d’échelle horizontal sera identi-
À ue
R6a XE=CXCI)-XI1)XFX+30 A NN M à
27Q YE=CYS-YCIDDXFY
280 CURSET XE,YE,1
230 NEXT I
260 — position du centre décallée vers la droite
30 DEF FNXCT)=COSCT)
4Q DEF FNYCTI=SINCT)
voici le résultat :
TRACE D’UNE COURBE PARAMETREE
VALEUR MIN. DU PARAMETRE? G
VALEUR MAX, DU PARAMETRE? 6,28
NOMBRE DE POINTS? 200
170 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
CALCUL DES COORDONNEES
RECHERCHE DES EXTREMES
Il manque des
axes : on va les
ajouter …
Afin de documenter la figure, nous allons tracer les axes de coordon-
nées se coupant au point 0,0 en écrivant un sous-programme de tracé des
axes qu’on utilisera à la ligne 300.
220 HIRES
1238 FX=239/CXS-XI)
248 FY=199/CYS-YI)
250 FOR I=1 TO NP
[268 XE=CXCID-XIDXFX |
27@ TE=CYS-YCIDDXFY
288 CURSET XE,YE,1
299 NEXT I
| REMARQUE
300 G :
SSOESNPERER ARS ] 300 — utilisation du sous-programme de tracé des
310 : axes
REMARQUES
PATTERN 215
520 XO=-XIXFX 500 à 570 — sous-programme de tracé des axes
530 YO=YSXEY 510 — motif du tracé
540 IF X2>-@ AND X2<=239 THEN CURSET x 520, 530 — position sur l’écran de l'intersection des
9,0,1:DRAWU G,199,1 Ares
5S5@ IF Y2>-0 AND Y2<=199 THEN CURSET @ 540, 550 — tracé des axes horizontal et vertical, si
, YO, 1 :DRAU 239,0, 1 cela est possible
56Q PATTERN 255 560 — on reprend le motif trait plein
570 RETURN
DESSINS EN HAUTE RÉSOLUTION 171
Exemples :
Bien des figures peuvent être tracées telle que celle-ci avec :
30 DEF FNXCTI=TXCOSCT)
4@ DEF FNYCTJI=TXSINCT)
TRACE D’UNE COURBE PARAMETREE
VALEUR MIN. DU PARAMETRE® Q
VALEUR MAX. DU PARAMETRE® 31,4
NOMBRE DE POINTS? 400
CALCUL DES COORDONNEES
RECHERCHE DES EXTREMES
Î
Î
+
|
|
|
|
|
l
|
|
|
TT
+
+ en sg em à
ou en prenant :
JOIDEF ENKÇCTIET
4Q DEF FNYCTI=CT-1)XCT+2)
172 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
TRACE D’UNE COURBE PARAMETREE
VALEUR MIN. DU PARAMETRE? --3
VALEUR MAX, DU PARAMETRE? 2
NOMBRE DE POINTS? 20
CALCUL DES COORDONNEES
RECHERCHE DES EXTREMES
courbe tracée entre —3 et 2 avec 20 points
DESSINS EN HAUTE RÉSOLUTION
173
DIAGRAMME CIRCULAIRE
HIRES CURSET CIRCLE DRAW CHAR
Pour comparer visuellement l’importance relative de plusieurs valeurs,
on peut utiliser un diagramme circulaire encore appelé « camembert » ! Cha-
que valeur est représentée par un secteur, une part du camembert, dont la
taille lui est proportionnelle. La réunion de toutes ces portions forme un disque
complet.
CLS : PRINT :PRINT'DIAGRAMME CIRCULAIR
PRINT :INPUT'NOMBRE DE VALEURS" ; NP
DIM UCNPI
ST=0@
.
e
FOR I=1 TO NP
PRINTUUALEUR NO MSI;
INPUT UCI)
ST=ST+UCI)
NEXT I
HIRES
*@=114:Y@0-1008
R=60
CURSET *x0,Y0,0
CIRCLE R;,1
AE=2XPI/ST
DRAW R,D,1
SP=Q:A1=0Q
FORI=1 TO NP
SP=SP+UCI)
A2=SPXAE
CURSET *x8,Y2,0
DRAW RYXCOS(A2),-RXSINCAZ)J,1I
REMARQUES
30 — réservation de mémoire pour les nb valeurs
40 — valeur initiale de S : somme des valeurs
60 à 100 — boucle d'introduction et de cumul des
valeurs
90 — cumul
130 — emplacement du centre du cercle
140 — rayon du cercle
150 — le centre
160 — tracé du cercle
170 — facteur d'échelle angulaire
180 — tracé du bord horizontal de la première
portion
200 — valeur initiale de SP somme progressive des
valeurs, et de A1, position angulaire d’un des bords
d’une portion
210 à 380 — boucle de découpage du camembert
230 — cumul des valeurs
240 — position angulaire de l’autre bord d’une
portion
250, 260 — tracé de bord
174
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
280 AM=(CA1+A2)/2
290 CURSET XB+R/2XCOSCAM), YB-R/2XSINCA
N),0
300 IF UCI)>=@ THEN CH$=MIDS$SCSTR$CUCI)
3,2) ELSE CH$=STR$CU(I))
310 FOR C=1 TO LENCCHS)
320 CHAR ASCCMID$S(CHS,C,1)),@,1
330 CURMOU 6,0,0
348 NEXT C
350 :
360 A1=A2
378 NEXT I
380 :
330 END
REMARQUES
280 à 340 — affichage de la valeur à l’intérieur de
la portion
280 — angle moyen
290 — point de départ de l’affichage
300 — on exclut le premier caractère d’une valeur
positive, car il ne plaît pas à la fonction ASC
310 à 340 — boucle d’affichage des caractères qui
constituent la valeur
320 — affichage
330 — on se décale pour écrire le caractère suivant
360 — le bord final de la portion devient le bord
initial de la portion suivante
Exemple : diagramme circulaire de l’importance des différents moyens
de transport de marchandises en 1982 :
oléoduc 11 %
voie fluviale 5 %
route 49 %
voie ferrée 35 %
DIAGRAMME CIRCULAIRE
NOMBRE DE UALEURS?T 4
UALEUR NO 1 ? 11
VALEUR NO 275
VALEUR NO 3 ? 49
VALEUR NO 4 ? 35
Faut-il regretter
que la voie fluviale
soit peu empruntée ?
LE MOMENT MUSICAL 175
26
FILL : DU REMPLISSAGE AVEC 64 MOTIFS
HIRES CURSET CURMOV FILL CHAR
HIRES
PRINT:PRINT'MOTIFS OBTENUS AUEC FIL
FOR P=32 TO 9S
IP=INT(P/16)
XP=IPx30
YP=IOXCP-IPXx16)
CURSET XxP,YP,@
FILLE SEP
CURSET XP+10,YP,Q 90, 100 — préparation à l'écriture du code P
P$=STR$S(P)
L’instruction FILL permet de remplir rapidement une zone de l’écran
soit en couleurs :
FILL 1@,1,17
soit avec des motifs de hauteur réglable et que l’on peut choisir dans un jeu
de 64. Chacun de ces motifs est formé de bandes verticales noires ou blan-
ches. Pour les comparer entre eux nous allons les placer l’un en-dessous de
l'autre sur quatre colonnes. En face de chacun nous écrirons son code que
vous pourrez placer dans une instruction :
FILL 19,1,P
REMARQUES
30 à 140 — boucle permettant d'explorer les 64
possibilités
40 — IP numérote les colonnes (0 à 3)
50, 60 — positions horizontale et verticale du coin
inférieur gauche d'un motif
70, 80 — dessin du motif
110 — le chiffre de gauche
CHAR ASCCNID$S(P$S,2,1)),9,1 130: 130 ct de droite
CURMOU 6,0,0@
CHAR ASC(MID$(P$,3,1)),9,1
NEXT P
La position des barres blanches obéit plus ou moins à un système de
numération binaire. Faites votre choix :
176 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
NJ
4
ñ
MOTIFS OBTENIIS AVEC FILL
REPONSES AUX QUESTIONS SUR LE CHAPITRE VII
1. En HIRES, la définition de l’écran est de 299 rangées sur 249 colonnes.
2. CURSET sert à positionner le curseur.
3. CURMOV déplace le curseur par rapport à sa position antérieure.
4. CIRCLE est accompagné de son rayon et du nombre FD. (Son centre est fourni
par la position du curseur.)
5. DRAVW tire un trait entre la position du curseur et un point dont on donne les
coordonnées en valeurs relatives.
6. FILL sert non seulement à mettre de la couleur mais commande aussi le clignote-
ment, le placement de motifs graphiques, etc.
7. REPEAT UNTIL commande la répétition d’une séquence tant que la condition
posée n’est pas réalisée.
8. Si N vaut 7, la condition N supérieure à 8 n’est pas remplie et, par conséquent, le
branchement en 79 ne se fait pas. Donc, le programme passe en 69 et affiche
BONJOUR.
9. L’ordre KEY$ n’arrête pas le programme : lorsque le Basic le rencontre, à quel-
qu’instant que ce soit, il lit le clavier.
CHAPITRE VIII
LE MOMENT MUSICAL
Nous vous avons déjà montré comment programmer les quatre « bruits » qui exis-
tent en instructions. Maintenant, c’est de la « musique » que nous allons faire. On
examinera aussi, dans ce chapitre, quelques dernières instructions en Basic qui vous
permettront de vous lancer sans hésiter dans la programmation.
Principaux thèmes abordés
SOUND Enveloppe des sons
MUSIC Accord musical
PLAY Période avec SOUND
Notes musicales GET
Canaux des sons
1. MUSIC, pour commencer
Pour faire de la musique, vous disposez de trois commandes qui sont SOUND
(pour son), MUSIC et PLAY (pour jouer). En première approche :
e SOUND sert à définir un son. Cet ordre est accompagné de 3 paramètres. Si le
dernier n’est pas nul, le son est émis pour cet ordre, mais s’il est égal à zéro, le son
est « mis en mémoire » et exécuté par un ordre PLAY suivant.
e MUSIC, lui, ne définit pas n’importe quel son mais les notes de musique de la
gamme. Son dernier paramètre joue comme avec SOUND.
e PLAY exécute des sons (SOUND ou MUSIC) définis antérieurement.
Commençons par l’ordre MUSIC. Pour jouer des notes de la gamme, il faut définir
la note, bien sûr, mais indiquer aussi dans quelle octave elle se situe, quel canal de
l’Oric elle emploiera et enfin, quelle sera sa puissance sonore (son volume). Ainsi,
MUSIC doit être accompagné de 4 paramètres dans cet ordre :
7 octaves, de 0 à 6
12 tons, de
1 à 12 : voyer
ci-dessous
De 1 à 15,
avec 15e
plus fort;
le O est un
cas spécial
Hyena3:
mettez 1, 2ou3
MUSIC canal, octave,note, volume
Notez les virgules de séparation : elles sont obligatoires. Commencez par essayer,
en mode direct :
178 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Octave
Au RETURN vous reconnaîtrez un sol, 2° octave (si vous êtes musicien). Pour
stopper le son, frappez sur n’importe quelle touche, la barre d’espacement de pré-
férence. Si les touches ne sont pas sonorisées, tapez d’abord CTRL/F.
Les octaves sont numérotées de # à 6, le #
étant le plus grave.
Les notes, elles, sont données ainsi, si l’on reprend l’exemple d’un clavier de
NOTES MUSICALES
O © &@
Sol # La #
Numéros
des notes
Le dernier paramètre de MUSIC situe le volume sonore. Essayez tout d’abord quel-
ques combinaisons avec l’ordre MUSIC, en mode direct mais avec le canal 1.
On va voir que, pour exploiter les 3 canaux
sonores de l’Oric, il faut employer
l’instruction PLAY. Donc, pour l'instant,
restez-en au canal 1.
En fait, le plus simple consiste encore à passer par le court programme suivant, qui
va vous permettre de modifier à chaque fois tous ces paramètres :
0 REM *MUSICx*
9 INPUT "OCTAVE=";0
9 INPUT "NOTE=";N
9 INPUT "VOLUME=";V
9 MUSIC 1,0,N,V
9 GOTO 29
LE MOMENT MUSICAL 179
Les lignes 29 à 49 vont, grâce à l’ordre INPUT qui combine implicitement un
PRINT de ce qui est contenu entre guillemets, vous demander ces divers paramè-
tres ; voici ce que donnerait un RUN :
Faites RETURN
après chaque
SP ep tr h entrée LP
RUN
OCTAVE=? 3
NOTE=? 5
VOLUME=? 12
OCTAVE=?
ss a nn e entr Au dernier RETURN, la }- —
note programmée
retentit, mais
{. La question suivante aussi …
apparait : dès que vous
frapperez une touche, la
note émise cessera
Expérimentez plusieurs combinaisons, afin de bien maîtriser les valeurs des para-
mètres : pour terminer, faites CTRL/C.
2. Pour jouer : PLAY
Si le dernier paramètre de MUSIC est un 9, l’ordre MUSIC n’est plus exécuté et
dépend d’un autre ordre, PLAY. Celui-ci, à son tour, est accompagné de paramè-
PLAY tres au nombre de 4 :
1) — Le canal, qui détermine le, ou les canaux actifs (de 9 à 7).
2) — Le « bruit », qui agit sur ces sons bi’arres qu’on appelle bruits, programmés
avec SOUND et non avec MUSIC (1 à 71.
3) — L'’enveloppe, qui agit comme bruit maïs cette fois, sur les sons.
4) — La durée : c’est le temps pour l’exécution de « l’enveloppe » ou du « bruit ».
Reprenons en détaillant, cette fois.
e Les canaux sont ainsi numérotés :
Programmation des canaux avec PLAY
9
1
2
3
4
5
6
7
CANAUX
DES SONS
1,2et 3
e Le « bruit » ou « l’enveloppe » définissent ce qu’en termes techniques, on
appelle la courbe enveloppe du son et qu’on pourrait ainsi interpréter :
180 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Enveloppe des sons et des bruits
Son décroissant (durée déterminée)
Son croissant (durée détèrminée)
ENVELOPPE
DES SONS
Son périodique, continu, en « dents de
scie »
Son périodique, continu, « ondulé »
Son nom périodique, continu, difficile à
définir
Son périodique, continu, en dents de
scie inverses de 3
Son nom périodique, continu, différent
de 5 et aussi difficile à définir. Mais on
va écouter tout cela.
e La durée, enfin, va de 9 à 32 767 ; pour comprendre son rôle, on va l’expérimen-
ter.
La syntaxe de PLAY est ainsi :
1à7
Oà7 C0 à 32767
PLAY canal, bruit,enveloppe, durée
A nouveau, toutes ces explications écrites sont indigestes si on ne pratique pas.
Aussi, pour les expérimenter, va-t-on vous proposer un programme du même type
que le précédent, ou le PLAY sera combiné à un MUSIC 1,2,8,9 (notez que le der-
nier paramètre est un zéro, afin de passer la main au PLAY qui suit). Procédons
cependant ici paramètre par paramètre pour commencer ; nous avons volontaire-
ment séparé ces divers programmes d’essai afin que vous puissiez y revenir ensuite.
Voyons pour la durée :
209 REM --DUREE DE © A 32767--
219 MUSIC 1,2,8,90
229 INPUT "DUREE"
230 PLAY 1,0,1,D
RUN 200 main» à PLAY
pour
exécution
Pour PLAY, on a choisi le
N'oubliez pas de préciser le
canal 1 et l’enveloppe 1
RUN 200
Au RUN, le programme vous demande la durée. Commencez par frapper 1599 :
vous obtiendrez un so/ comparable à celui d’un piano (le son s’éteint très vite).
Moins de 59, le son est trop bref. Plus de 5999, il n’en finit plus de s’atténuer et de
mourir. Essayez plusieurs valeurs, puis faites CTRL/C.
Expérimentons, maintenant, l'enveloppe avec une durée de 1599. Voici le nouveau
programme :
ACCORD
MUSICAL
LE MOMENT MUSICAL 181
309 REM -ENVELOPPE, DE 1 A 7-
319 MUSIC 1,2,8,9
320 INPUT "ENVELOPPE';E
330 PLAY 1,0,E,1509
349 GOTO 310
RUN 399
Avec enveloppe = 1, vous retrouvez la frappe d’un piano. Avec 2, c’est l’inverse : le
son démarre faible et s’amplifie jusqu’à son maximum, cela pendant la « durée »
de 1599 (une durée supérieure lui accorderait davantage de temps).
Avec 3, c’est un marteau qui frappe continuellement la note sol ; comme si vous
faisiez 1 en permanence. Le 4, lui, vous donne à peu près le 2 en répétition conti-
nue. Le 5 démarre bizarrement, un peu comme en 1, puis reste sur un son continu. :
Le 6 ressemble au 3, mais est encore moins harmonieux peut-être. Enfin, le 7 four-
nit une montée rapide en puissance, comme le 2, et se poursuit par un son continu.
Ces explications sont approximatives : rien ne vaut un essai.
Franchissons encore un pas, en travaillant à la fois sur l'enveloppe et la durée avec
la séquence suivante :
1909 REM -ENVELOPPE ET DUREE-
119 MUSIC 1,2,8,0
129 INPUT "ENVELOPPE'";E
130 INPUT "DUREE" ;D
140 PLAY 1,0,E,D
159 GOTO 129
UN
Essayez plusieurs combinaisons ; pour l’enveloppe 1 et 2, le résultat est évident : le
« piano » ou un son croissant, durant ce que vous fixez avec D. Essayez avec :
e Enveloppe 3 : pour durée = 1999, c’est une enclume sur laquelle on frappe à
coups répétés. À 19999, c’est la cloche d’une église (l’auteur fait un peu de poésie).
A 199, c’est un moteur qui ne tourne pas rond. Le son se répète à chaque fois à per-
pétuité, jusqu’à une nouvelle frappe.
e Enveloppe 4 : avec D = 1999, c’est un avion qui marche très mal (ou une scierie) ;
avec D = 1999, on obtient un son qui commence très fort, diminue, disparaît, puis
réaugmente, atteint son maximum, puis rediminue, etc. Si D = 199, c’est un teuf-
teuf rapide.
e Enveloppe 5 : avec D = 1999, c’est un « point » suivi d’un son continu ; avec 199,
on ne l’entend plus, mais le son est toujours continu ensuite.
e Enveloppe 6 : reportez-vous au 3, à peu près.
e Enveloppe 7 : comme 5, mais au lieu d’un « point », c’est un son croissant.
En conclusion, la durée, avec l’enveloppe 5 et 7, agit sur la courte période prépara-
toire du son, mais plus sur la suite.
Si, de plus, vous faites des essais avec des « enveloppes » non prévues, vous risquez
d’obtenir toutes sortes de choses curieuses et indescriptibles.
3. Des accords
Il est temps, maintenant, de vous montrer comment actionner plusieurs canaux
simultanément. Pour cela, il faudra employer obligatoirement PLAY. Par exem-
ple, pour travailler avec les 3 canaux, on sera en PLAY 7 pour le premier paramè-
tre. Un accord do, mi, sol se programmerait ainsi :
182
PERIODE AVEC
SOUND
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
5 REM *ACCO
19 MUSIC 1
29 MUSIC 2
39 MUSIC 3
49 PLAY 7,
RUN
RD
2:
2;
2,
9
- QUI x
9
Cette fois, on a programmé la puissance avec MUSIC ; c’est PLAY qui met en ser-
vice les trois canaux (faute de quoi, seul le canal 1 fonctionnerait).
Ici, PLAY ne sert qu’à programmer les
canaux ; c’est pourquoi ses autres paramètres
sont à zéro. D’autres valeurs ne joueraient
pas sur le résultat.
Essayez de remplacer le 7 de PLAY par d’autres valeurs ; à chaque fois, vous
entendrez les canaux mis en service, 2 ou 1. Par contre, le @ les interdit tous ; on va
s’en servir pour programmer cet accord sur 1 seconde, puis pour l’arrêter ; ajoutez
59 et 69 :
Pendant une seconde …
5 REM XACCOR
19 MUSIC 1,2
29 MUSIC 2,2
39 MUSIC 3,2
49 PLAY 7,6,
59 WAIT 190
69 PLAY 0,0,
… Puis retour
ES au silence 77
Vous pouvez, maintenant, programmer « Au clair de la lune » ou des mélodies
plus « savantes » si vous le désirez.
4. Sons divers
Il nous reste à examiner l’ordre SOUND, qui agit comme MUSIC. On doit préci-
ser : le canal, la période et le volume :
e Le canal sera, cette fois :
— 1, ou 2, ou 3 pour des sons purs
— 4, 5 ou 6 pour des « bruits ».
En fait, il n’y a qu’un canal pour les bruits, le canal 4. Aussi 4, 5 et 6 reviennent à
spécifier quel canal son (1, 2 ou 3) doit être mêlé au canal 4.
e La période est un terme technique : elle fixe la hauteur du son. Plus sa valeur est
forte et plus le son est grave. Chaque note de la gamme est déterminée par une
valeur précise de la période ; avec SOUND, vous pourrez imaginer toutes les notes
possibles.
e Enfin, le volume va de 1 à 15, comme avec MUSIC. A zéro, il transmet l’exécu-
tion à PLAY.
La syntaxe de SOUND est ainsi :
LE MOMENT MUSICAL 183
1à6
SOUND canal, période, volume
Commençons par expérimenter la période avec ce programme :
19 REM -PERI
29 INPUT "PE
39 SOUND 1,P
49 GOTO 29
Au RUN, entrez plusieurs valeurs ; vous constaterez que les hauteurs de sons cou-
rants se situent autour des centaines. Terminez par CTRL/C.
Pour mettre les divers canaux en service, il faut, à nouveau, passer par PLAY.
Mais alors là, les combinaisons sont quasi-infinies et nous ne pouvons vous les
décrire. Voici, par exemple, comment obtenir un coup de feu (sans SHOOT) :
NEW
19 SOUND 5,599,19
29 PLAY 7,1,0,500
Chaque nouveau coup de feu vous imposera un RUN. Voici comment « tirer » au
moment que vous choisirez.
5. Attendez une touche
Il existe une méthode servant à attendre la frappe d’une touche pour déclencher des
opérations. On passe alors par l’ordre GET ; lorsque le Basic rencontre GET, il
GET stoppe toute exécution et attend la frappe d’une touche. Vous pouvez sélectionner
une touche particulière, ou aucune en particulier, et dans ce cas, toutes seront pri-
ses en compte. Dès que vous en frappez une, le Basic poursuivra alors son pro-
gramme. Voici ce que cela donnerait avec notre coup de feu :
On n'a défini aucune
touche en particulier.
Dés /a frappe d'une d'elles,
le programme se poursuit à es -- COMMANDE DE FEU--
19 SOUND 5,549,
29 PLAY 7
30 GOTO 8
La valeur correspondant
à la touche frappée
s’appellera T$
Après GET, on donne généralement un nom de chaîne à la touche frappée. Vous
pourriez, ensuite, vérifier par programme que T$ correspond à telle touche que
vous avez sélectionnée pour le tir, par exemple la touche ? (et pourquoi pas).
184 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Dès le RUN, le programme attend ici la frappe d’une touche. Dès qu’elle se pro-
duit, le coup de feu part. Hélas : le bruit propre des touches, qui sont sonorisées,
perturbe notre coup de feu. Il faudrait supprimer cette sonorisation avec un
CTRL/F avant le RUN, comme on l’a vu (on la rétablira avec CTRL/F aussi).
Mais essayez donc, maintenant, de stopper ce programme : toutes les touches qu
combinaisons de touches, y compris CTRL/C, déclenchent un coup de feu ! Avez-
vous une idée sur la façon de vous en sortir ? Oui, c’est cela : retournez l’Oric et
appuyez sur le RESET. Vous pouvez alors faire CTRL/F, puis RUN, à nouveau.
Constatez qu’en maintenant n’importe quelle touche enfoncée, vous simulerez une
mitrailleuse.
A partir de cela, vous pourriez imaginer le programme suivant : vous passez en
mode graphique et vous déplacez un mobile coloré sur l’écran. Il n’est vulnérable
que sur certaines positions que vous déterminez. Si vous tirez à ce moment, vous le
désintégrez ! Et si ce projet ne vous convient pas, rien ne vous interdit d’en conce-
voir d’autres !
Toujours est-il que vous en connaissez maintenant assez pour passer aux program-
mes que nous vous proposons à la fin de chaque chapitre, et à ceux qui sont regrou-
pés dans le chapitre 9. Vous pourrez alors broder sur ces programmes et innover en
écrivant les vôtres.
Pour la musique trois instructions c’est peu et c’est beaucoup à la fois ! SOUND,
MUSIC et PLAY ont en effet bien des possibilités, mais il faut du temps et de la
patience pour les découvrir. Si on veut comparer l’effet produit par SOUND 1, 2, 3
par exemple, il faut taper une bonne vingtaine de touches, de quoi perdre le fil !.
Pour évaluer les richesses de SOUND), voici un programme qui ne vous demandera
que ce que vous voulez changer à chaque nouvel essai. Nous ferons la même chose
pour MUSIC et PLAY pour qu’il n’y ait pas de jaloux !
QUESTIONS SUR LE CHAPITRE VIII
Il est évidemment peu intéressant de répondre à des questions sur les sons sans
manipuler. Voici cependant ce que vous devez conserver à l’esprit :
SOUND et MUSIC peuvent-il provoquer l'émission de sons, sans recours à
PLAY ?
[ Oui
[ Non
MUSIC sert à créer :
Ü] Des sons de timbre absolument quelconque
[] Uniquement les notes de gammes musicales
Quel ordre provoque la mise en service de plusieurs canaux simultanément ?
O MUSIC
O) PLAY
Pour créer des bruits divers, on utilisera :
[] SOUND
CO MUSIC
L'ordre GET :
© Sert à lire le clavier, sans arrêter le programme, à la volée
Ü Stoppe le programme et attend qu’une touche soit frappée.
Réponses page 194
LE MOMENT MUSICAL 185
27
SOUND : DÉCOUVREZ LES SONS
SOUND GET
SOUND a besoin de trois paramètres pour produire un son : le numéro
du canal, la période et le volume. Au démarrage du programme qui suit c’est
le canal 1 qui produira un son musical de période 1000 avec le volume 3.
Ensuite vous changerez à volonté un de ces trois paramètres en conservant
les deux autres. Pour chaque son produit le programme affichera l’instruc-
tion SOUND complète, comme si vous l’aviez tapé au clavier. Notez les com-
binaisons qui vous plaisent, vous les placerez dans vos programmes... Un
son durera jusqu’à ce qu’on modifie un paramètre. Pour terminer taper CTRL
CE:
C=1:P=1A0Q0 :U=3 REMARQUES
a | 10 — les paramètres de départ
20 à 100 répéter jusqu’à ce qu’on tape CTRL C
30 — le ménage sur l'écran
PRINT'SOUND. "$C 5", MSP Sr SU
GET T$ 40 — le son
JF T$="C" THEN [NPLT'CANAL 1 À 6"$C 50 — l'image
80 IF T$="P" THEN INPUT"PERIODE @ À 32
267" ;P
60 — attente d'une frappe de touche
70 à 90 — les trois choix possibles
QQ IF T$="U" THEN INPUT"UOLUME @ À 15"
JU
1@@ LINTIL T$=CHR$(3)
Au départ, vous obtenez :
SOUND 1 ,1900 ,3
Pour changer le canal, tapez € puis le numéro.
Pour la période c’est P et le volume V :
SOUND 1 ,2900 ,6
Essayez plusieurs canaux, et vous remarquerez qu’il n’y a guère que le
1 qui donne quelque chose, pour l'instant. Que se passe-t-il si on multiplie
ou si on divise la période par 2 ?
Testez votre oreille : diminuez la période en gardant le volume 3.
Si vous arrivez à une période de 5, c’est très bien, entre 6 et 8 ça va ;
au-dessus, c’est peut-être le haut-parleur qui faiblit ! Pourquoi ne pas rac-
corder l’Oric à votre chaîne hi-fi ou un appareil de ce genre ?...
186 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
28
MUSIC : MUSIQUE
MUSIC GET
MUSIC a besoin de 4 paramètres : numéro de canal, octave, note et
volume.
Adoptons le même principe que pour le programme 27 : un choix entre
4 frappes de touches pour préciser le paramètre qu’on veut changer, C, O,
N ou V. Puis on tape la valeur de ce paramètre (suivie de return) et le son
retentit accompagné du texte de l’instruction MUSIC qu’il aurait fallu taper.
10 C=1:0=2:N=] :0=3
28 REPEAT
3Q CLS
4Q MUSIC C,O,N,U
50 PRINT'MUSIC ";C;","30;","3;3N;","3U REMARQUES
68 GET T$ 10 — les paramètres de départ
78 IF T$="C" THEN INPUT'CANAL 1 À 6";C 20 à 110 — répéter jusqu’à ce qu’on tape CTRL C
80 IF T$="0" THEN INPUT"OCTAUE Q À 7"; Lo
0 50 — l’image
3SQ IF T$='"N" THEN INPUT'NOTE 1 À 12'";N 60 — attente d’une frappe de touche
70 à 100 — étude des 4 cas
100 IF T$="U" THEN INPUT'"'UOLUME 8 À 15
ASE)
3
110 UNTIL T$=CHR$(3)
Pour commencer :
MUSIC 1, 2, 1, 3
Ce qu’on obtient
après RUN
Montez la gamme : fixez l’octave et passez en revue les notes 1 à 12,
puis recommencez pour l’octave au-dessus.
MOUSTE Les. st. 3
En tapant, par exemple,
la lettre O, puis 3 suivi
de RETURN : Ici encore, seul le canal 1 fonctionne.
Nous découvrirons les autres grâce au concours de l'instruction PLAY...
Mais pourriez-vous couvrir 8 octaves comme le fait déjà MUSIC ?
LE MOMENT MUSICAL 187
29
SOUND MUSIC PLAY :
POUR MELANGER LES SONS
SOUND MUSIC PLAY
Sans l’instruction PLAY, SOUND et MUSIC ne délivrent qu’un seul son.
Pour apprécier les nombreuses possibilités de l’ensemble PLAY,
SOUND, MUSIC, nous vous proposons un programme dans la lignée des
deux précédents, mais beaucoup plus long, car le domaine est vaste !
Pour chacune des trois instructions, vous pourrez choisir de modifier
un des paramètres. Afin d’y voir plus clair, on affichera dans la moitié infé-
rieure de l’écran (rouge), l’instruction SOUND ou MUSIC Ia plus récente
concernant chacun des 6 canaux, et on mettra à jour le texte de l’instruction
PLAY.
Le haut de l’écran (vert) servira de journal de bord relatant les diverses
directives que vous donnerez.
1 PLAY 0,0,0,0
28 POKE 623,27
39 PAPER 1':CLS
REMARQUES
10 — arrêtez la musique !
4Q POKE 623,14 20 — plein écran
50 POKE 619 », 18 30 — fond rouge, partout
Fee 40 — écran réduit : les 14 lignes du haut
DIM P(6),0(6),NC6),UC6)
8Q B+=" ’ ! ; 50 — fond vert pour le haut
9Q FOR C=I1 TO 6 70 — réservation pour les paramètres période,
18@ N(C)=1 octave, note, volume
11@ NEXT C 80 — pour blanchir plus tard : 23 espaces
12@ : 90 à 110 — initialisation des notes à 1 pour les six
130 REPEAT canaux
148 PRINT :PRINT'S:SOUND, M:MUSIC, P:PLAY D On EE quon br ur
> F:FIN?"
150 GET I$ 140 — le premier choix
150 — attente d’une frappe de touche
168 IF T$-"S\ THEN GOSUB 1290:T$=""
170 IF T$-"M" THEN GOSUB 2000 :T$="" 160 — SOUND
189 IF T$-"P" THEN GOSUB 3000 :T$="" 170 — MUSIC
138 UNTIL T$="F" D EERe
188
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
1008 PRINT"SOUND"
1018 PRINT"C:CANAL, P:PERIODE, U:UOLUME?
1020 GET T$
1030 IF T$="C" THEN INPUT"CANAL 1 À 6";C
:GOTO 1010
1040 IF T$="P" THEN INPUT"'PERIODE 0 À 32
267" ;PCC)
105@ IF T$="U" THEN INPUT"UOLUME @ À 15"
5UCC)
1060 PLOT 1,13+2XC,B$
1070 A$="SOUND "+STR$(C)+", "+STR$S(P(C))+
"3 "+STRSCUCC))
1080 PLOT 1,13+2XC,;A$
1930 SOUND C,PCCJ;UCC)
1100 RETURN
1390
200@ PRINT"'MUSIC"
2010 PRINT"C:CANAL, O:OCTAUE, N:NOTE, U:
UOLUME ?"
2020 GET T$
2030 IF T$="C" THEN INPUT"CANAL 1 À 3";C
:GOTO 2810
2040 IF T$="0" THEN INPUT"OCTAUE @ À 7";
OCC)
2050 IF T$="N" THEN INPUT'NOTE 1 À 12"3;N
CGJ
2060 IF T$="U" THEN INPUT"'UOLUME @ À 15"
3UCC)
287@ PLOT 1,13+2XC,;B$
2080 A$="MUSIC "+STR$(C)+", "+STR$SC(OCC)
+", "+STR$SCNCC))+", "+STRSCUCC))
2090 PLOT 1,13+2XC,A$
2188 MUSIC C;,OCC),NCC)J,UCC)
211Q RETURN
2390 :
3008 PRINT"PLAY"
301 PRINT'N:CANAL NOTE, B:CANAL BRUIT
s F:FORME, D'DUREE?\"
3020 GET T$
3038 IF T$="N" THEN INPUT'"CANAL NOTE Q
A 7";CN:GOTO 3018
3040 IF T$="B" THEN INPUT"CANAL BRUIT
@ À 7";CB:GOTO 3818
3050 IF T$="F" THEN INPUT"FORME 1 À 7"
5F
3060 IF T$="D" THEN INPUT"'DUREE Q À 32
267" 5D
REMARQUES
1000 à 1100 — sous-programme d'utilisation de
l'instruction SOUND
1010 — sous-choix
1020 — attente d’une frappe de touche
1030 — choix du canal
1040 — choix de la période
1050 — choix du volume
1060 — effaçage de l’ancienne instruction SOUND
1070 — texte de la nouvelle
1080 — affichage
1090 — le son
REMARQUES
2000 à 2110 — sous-programme d'utilisation de
l'instruction MUSIC
2010 — sous-choix
2020 — attente d’une frappe de touche
2030 — choix du canal
2040 — choix de l’octave
2050 — choix de la note
2060 — choix du volume
2070 — effaçage de l’ancienne instruction MUSIC
2080 — texte de la nouvelle
2090 — affichage
2100 — le son
REMARQUES
3000 à 3210 — sous-programme d'utilisation de
l'instruction PLAY
3010 — sous-choix
3020 — attente d’une frappe de touche
3030 — choix du ou des canaux de sons purs
3040 — idem pour les canaux bruits
3050 — forme
3060 — durée
LE MOMENT MUSICAL 189
REMARQUES
311Q FOR I=1 TO 3
312@ NC=CN AND 2"(I-1) es HAT de marquage des canaux con-
700 BERCB" AND, PCI 3120 — NC vaut 1 pour un canal son concernés par
3140 IF NC THEN PLOT @,13+2XI,"x" ELSE PLAY
PLOT G,13+2XI," "
3150 IF RC THEN PLOT @,19+2X/I,"x" ELSE on
PLOT @,19+2XI," " ARS RARES par une étoile si le canal son n° 1
316Q NEXT I
3178 PLOT 15,28,B$
3180 AS$S="PLAY MAESTRSCCNI+", "4+STRS(CB)+ 3170 — effaçage de l’ancienne instruction PLAY
Ms MESTRECF)+"S MESTRECD) 3180 — texte de la nouvelle
3198 PLOT 15,20,A$ 3190 — affichage
3208 PLAY CN,CB,F,0D
321@ RETURN
3130 — idem pour un canal bruit
3150 — idem pour le canal bruit n° 1+3
3200 — exécution
Et maintenant vous allez être récompensé de votre effort, puisque vous
pourrez essayer confortablement toutes les combinaisons qui vous passent
par la tête, à condition qu’elles soient possibles. Pour ne pas allonger le pro-
gramme, nous n’avons pris aucune sécurité : si vous demandez l’impossi-
ble, vous obtiendrez un message d’erreur et le programme s’interrompra.
Ce n’est pas grave, tapez GOTO 130, et tout repartira comme avant !
Exemple :
Tapez RUN puis
S C 1 Return P 300 Return
S:SOUND, M:MUSIC, P:PLAY, F:FIN?
SOUND
C:CANAL, P':PERIODE, U:UOLUME?
CANAL 1 À 6? 1]
C:CANAL, P:PERIODE, U:UOLUME?
PERIODE Q A 32767? 300
S'SOUND, M:MUSIC, P:PLAY, F3FIN?
SOUND 1,300,
Il manque le volume et le lancement par PLAY ; tapez S V 3 Return
(on ne reprécise pas le canal, puisque c’est le même) puis P, vous devez avoir
ceci sur l’écran :
UOLUME @ À 15? 3
S:SOUND, M:MUSIC, P:PLAY, F':FIN?
190 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
PLAY
N:CANAL NOTE, B:CANAL BRUIT, F':FORME,
D :DUREE®
CANAL NOTE Q A 77 1!
N'CANAL NOTE, B:CANAL BRUIT, F:FORME,
D :DUREE®
puis 1 Return
On a tapé Return
tout seul
S:SOUND, M:MUSIC, P:PLAY, F:FIN?
SOUND 1,300,3
PLAY 1,2,0,0
Voici le résultat du mélange des 3 canaux de son pur avec du bruit sur
le canal 3, en travaillant sur ce canal avec la forme répétitive 3 et une durée
de 500 ;
S'SOUND, M:MUSIC, P:PLAY, F:FIN?
PLAY
N'CANAL NOTE, B:CANAL BRUIT, F:FORME,
D 'QUREE?
DUREE @ À 32767? 500
S:SOUND, M:MUSIC, P:PLAY, F:FIN?
MUSIC 1,4,1,5
XMUSIC 2,4,5,5
XMUSIC 3,4,8,0
PLAY 7,4,3,500
XSOUND 6,1200,0
Mais surtout, ne vous arrêtez pas là : tâtonnez.
Quand c’est bon notez la recette, et lorsque c’est franchement mauvais
tapez F puis RUN pour obtenir le silence !
LE MOMENT MUSICAL
191
30
EN RYTHME
Un bruit bien cadencé peut marquer le rythme. Mélangez avec une note
bien choisie et vous obtenez de la musique !
Le choix du rythme se fera en tapant un chiffre entre 1 et 7, quant aux
notes on les trouvera sur la deuxième rangée de touches à partir du haut.
Si vous les comptez, de Q à |, vous trouverez 12, c’est-à-dire exactement le
nombre de demi-tons d’une octave. Le choix de celle-ci vous est laissé au
début.
19 CLS;PRINT"'EN RYTHME 2"
20 DATA Q,U,E,R,T,Y,U,1,0,P,C,]
30 DIM NC93)
40 FOR C=65 TO 93
5@ NCC)=]
6Q NEXT C
28 FORI=I TO 12
8Q READ C$
98 NCASC(CH)I)=I
100 NEXT I
1@S :
119 PRINT:PRINT'TEMPO : 1 À 27"
12Q PRINT:PRINT'NOTE Q A J"
130 INPUT'"QUELLE OCTAUE (@ A 2)";0
148 SOUND 5,108,@
145 :
15Q REPEAT
16Q T$=KEYTS
1/@ IF T$>"@" AND T$<"8" THEN PLAY 1,2
» 3, IBBGXCUALCTS)+2)
18Q IF T$>="A" AND T$<="]" THEN MUSIC
1,0, NCASCCT#)),8
198 UNTIL T$=CHR$C3)
Exemple :
REMARQUES
20 — les 12 touches produisant une note
30 — N fichier des notes
40 à 60 — on met 1 pour chaque note, a priori.
70 à 100 — … et on change les 12 prévues
110, 120 — affichage des possibilités
130 — choix de l’octave
140 — préparation du bruit
150 à 190 — répétition jusqu’à ce qu’on tape
CTRL C
160 — lecture du clavier au vol
170 — choix d’un rythme pour le canal 1, la durée
est de 300, pour 2 : 400 etc.
180 — choix d’une note : une des 12 prévues, ou
bien 1
Choisissez un rythme de 1 (rapide) à 7 (lent) puis pianotez en utilisant
les touches Q, W, .… P,[et ].
EN RYTHME ©
TEMPO : 1 À 7
NOTE Q À ]
QUELLE OCTAUE (8 À 7)? 4
Ne vous gênez pas pour changer le volume dans l’instruction MUSIC
(ligne 180) ou la période de SOUND (ligne 140) !
192
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
31
MUSIQUE AU HASARD
MUSIC
1, 26, "MOUVEMENT NUMERO
FOR M=1 TO 3
Reposons-nous un instant en laissant le hasard créer une musiquette en
trois mouvements : léger et aigu, moins aigu, puis plus posé et plus grave.
Pour obtenir ce résultat, il faudra bien sûr forcer un peu la main au hasard !
Pour voir les différents mouvements, les notes seront affichées sur l’écran
à la bonne hauteur.
On laissera le choix entre deux octaves, en fixant la plus basse. La durée
de chaque note sera la même pour les deux premiers mouvements, et le dou-
ble pour le troisième.
REMARQUES
10 à 30 — un guide pour le hasard
40 — réglage de la longueur de chaque mouvement
70 — position horizontale des notes : 4 pour la
première
90 à 250 — boucle sur les mouvements
100 — affichage du numéro du mouvement
PLOT 18,26, STR$CM) 110 — lecture des valeur guides : plage et décalage
READ PLAGE, DECAL, DM pour l’octave, durée maximum d’une note
FOR K=1 TO L/DM
120 à 230 — boucle pour ajuster la longueur d’un
O= INT CRND(1 )XPLAGE ) +DECAL MENCNERL
FOR I=1 TO 5
D=RNDC1)XxDM+1
130 — choix de l’octave pour cinq notes successives
140 à 220 — boucle sur cinq notes
N=INTCRNDC1)%x12)+1
H=27=-(0-13*%6-N72
PLOT X,H,"9"
MUSIC 1,0,N,8
WAIT D
RX=AtTI
NEXT I
NEXT K
WAIT S@
NEXT M
PLAY 0,0,0,0
150 — durée d’une note
160 — valeur de la note
170 — sa position verticale sur l’écran
180 — on la ’’note’””
190 — on la joue
200 — on la maintient
210 — position horizontale de la prochaine note
240 — séparation entre deux mouvements
270 — fin : silence !
Exemple :
Avec les trois instructions DATA données dans le texte du programme,
voici ce que nous avons obtenu. La ’’photo”” prise avant la fin signale que
le dernier mouvement était le troisième, et on a droit à un magnifique Ready
en haut de l’écran puisque le programme n’utilise pas d’instruction PRINT.
LE MOMENT MUSICAL 193
MOUVEMENT NUMERO 3
Modifiez les valeurs des DATA, en retouchant éventuellement à la ligne
170 si les notes ne tiennent plus sur l’écran.
194 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
REPONSES AUX QUESTIONS SUR LE CHAPITRE VIII
1. Oui, à la condition que leur dernier paramètre, le volume, ne soit pas nul.
2. MUSIC sert à créer des notes musicales, et ce, sur plusieurs gammes.
3. C’est PLAY qui sert à mettre en service plusieurs canaux simultanément, et non
MUSIC.
4. Pour créer des bruits, il faut utiliser SOUND..
5. GET stoppe le programme et attend qu’une touche soit frappée. Ne confondez
pas GET avec KEY$ qui, lui, fait lire le clavier au passage, sans arrêter le pro-
gramme.
CHAPITRE IX
POUR REVISER
CINQ PROGRAMMES UTILES
OU DIVERTISSANTS
A la fin des chapitres 4 à 8, vous avez trouvé plusieurs exemples de pro-
grammes qui mettaient en pratique les nouveautés dévoilées dans le chapi-
tre, sans faire appel aux notions traitées par la suite.
C’est maintenant qu'il faut regrouper tout ce que vous savez en pre-
nant comme support cinq programmes dans lesquels vous devriez retrouver
des têtes connues ! Chaque fois, après avoir fixé l’objectif, et pour vous aider
à concevoir par la suite vos propres programmes, nous analyserons le tra-
vail en dégageant les grandes lignes. Et, comme précédemment, le texte du
programme sera accompagné de remarques, et nous vous donnerons des exem-
ples d'utilisation !
32
MISE EN FORME :
COMMENT AFFICHER PROPREMENT UN NOMBRE
Vous vous êtes peut-être posé cette question : y a-t-il un moyen pour
afficher un nombre représentant une somme d’argent en francs et centimes,
au lieu d’avoir quatre ou cinq chiffres après la virgule comme ça peut arri-
ver. On souhaite alors écrire (sur l’écran) selon un format imposé.
Dans certains dialectes du Basic, ou dans d’autres langages, on peut trou-
ver une instruction qui satisfait à ce besoin légitime. Mais le Basic de l’Oric
ne connaît pas cette instruction, et il n’est pas le seul !
Il faut donc faire le travail, et on distingue deux méthodes : celle du
tout numérique et celle du traitement de texte. La première méthode con-
siste à arrondir la valeur en imposant le nombre de décimales : pour garder
les 2 premiers chiffres après la virgule ; ce qui doit donner 3.52 dans 3,523
on peut écrire
INT(3.523+100)/100
Mais au moment de diviser pour retrouver le bon ordre de grandeur,
on a parfois des surprises : pour écrire 1 avec 5 décimales,
INT(1x10A5)/10A5 donne 0.999999999 à cause de l’erreur sur 10AS ! Et
même lorsque ça se passe bien, on ne maîtrise pas la place qu’occupe le résul-
tat : elle dépend du nombre de chiffres à gauche de la virgule.
196 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
L’autre méthode est plus sûre et plus complète : elle consiste à se servir
des fonctions de traitements de texte du Basic (LEFT$, MID$, RIGHTS,
LEN). Elle est aussi plus lourde.
Pour étudier les caractères qui composent un nombre, il faut transfor-
mer celui-ci en chaîne de caractères avec la fonction STR$. Après avoir trouvé
la place du point décimal, on peut maîtriser entièrement l’affichage des valeurs
numériques) : nombre de décimales et nombre de caractères maximum utili-
sés pour représenter les valeurs, y compris les espaces éventuels. Le programme
qui suit est constitué schématiquement de deux parties :
— mise en forme (lignes 9000 à 9210)
— utilisation de cette mise en forme à titre d’essai (lignes 10 à 140).
Il existe au moins deux cas pour lesquels ça ne marche pas : pour un
nombre avec puissance de 10 (E..) et lorsque la dernière décimale conservée
vaut 9 et que la suivante est supérieure à 4. Nous réglerons ce deuxième incon-
vénient dans la seconde version du programme.
18 CLS :PRINT :PRINT'"'AJUSTAGE D'UN NOMBRE"
2@ INPUT'"UOTRE NOMBRE ‘“;N
30 GOSUR 3000 REMARQUES
4Q REPEAT
50 PRINT:INPUT'NB DE CARACTERES ‘“ ;3NC
60 INPUT'"NB DE DECIMALES ‘";ND
20 — introduction de la valeur à mettre en forme
30 — utilisation du sous-programme d’initialisation
780 GOSUB Sa5a 40 à 100 — répétition jusqu’à l’abandon
80 : 50 à 60 — introduction des caractéristiques de mise
398 PRINT'RESULTAT ‘“;N$ en forme
100 INPUT'"AUTRE MISE EN FORME CO/N)" RS 70 — utilisation du sous-programme de mise en
119 UNTIL R$="N" PUS
120 : 90 — affichage du résultat obtenu
138 END 100 — question
140 130 — fin
9000 à 9030 — sous-programme d’initialisation
ES="KXKKAKIRAX 9000 — chaîne servant de réservoir de blancs (9
espaces):
2$-"000200000"
RETURN 9010 — réservoir d'étoiles
9020 — réservoir de zéros
9050 à 9210 — sous-programme de mise en forme
N—NS$
N$=STRS$S(N) :L=LENCNS) : :
9050 — la valeur numérique N est convertie en
IF N>=Q THEN L=L-1:N$S=RIGHT$SCNS,L) chaîne de caractères sous le nom NS, L : nombre
de caractères
FOR C=]1 TO L 9060 — nombre positif : on rejette le caractère de
IF MID$SCN$,C,;13="," THEN R=C :GOTO 9 gauche
9080 à 9100 — boucle de recherche du point
NEXT C 9090 — R représente la place du point, s’il existe,
NS$S=N$+"," comptée à partir de la gauche
9110 — le point n’existe pas : on l’ajoute à droite
POUR REVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 197
3128 L=L+l:R=L
3130 :
9148 IF ND=QG THEN NS$S=LEFTS$SCNS$,R-1) :GOTO
3130
3150 NS$S=N$+2$
3160 DES$S=MIDSCNS , R+ND, 1)
9170 IF MID$SCN$, R+ND+1)2="S" THEN DES$=CH
R$SCASCC(DES)+1)
3180 N$=LEFTSCNS, R+ND-1)+DES$
3198 L=LENCNS)
3208 IF L>NC THEN N$=LEFTS$SCES, NC) ELSE N
$=LEFT$S(BS$S,NC-L)J+NS$
3210 RETURN
Exemples :
AJUSTAGE D’UN NOMBRE
VOTRE NOMBRE ? 12.3456
NB. DE. CARACTERES © 7
NB DE DECIMALES ? 4
RESULTAT 12,3456
AUTRE MISE EN FORME CO/N)?
NB DE CARACTERES ? 6
NB DE DECIMALES 9? 4
RESULTAT XXXXXX
AUTRE MISE EN FORME CO/N)?
NB DE CARACTERES ? 4
NB DE DECIMALES ? 1
RESULTAT 12.3
AUTRE MISE EN FORME CO/N)?
NB DE CARACTERES ? 2
NB DE DECIMALES ? @
AJUSTAGE D’UN NOMBRE
VOTRE NOMBRE ? -12.3456
NB DE CARACTERES ? 6
NB DE DECIMALES ?2
RESULTAT -12,35
AUTRE MISE EN FORME CO/N)?7 0
REMARQUES
9120 — il y a donc un caractère de plus et R mar-
que le dernier
9140 — on ne souhaite pas de décimales : il ne faut
conserver que ce qui est à gauche du point
9150 — on souhaite des décimales : on ajoute neuf
zéros au bout du nombre pour satisfaire tous les
besoins légaux (< =9 décimales)
9160, 9170 —- arrondissement de la dernière déci-
male à conserver, en tenant compte de la suivante :
si celle-ci est supérieure ou égale à 5, on ajoute 1
à la dernière décimale conservée
9180 — troncature : on ne conserve que ND
décimales
9200 — le nombre de caractères nécessaires pour
afficher la valeur est supérieur au nombre prévu
(NO) : afficher NC étoiles, sinon, on complète à
gauche par des espaces, si c’est nécessaire, afin de
former une chaîne de NC caractères
RESULTAT 12
AUTRE MISE EN FORME (CO/N)?
NB DE CARACTERES ? 5
NB’ DE DECIMALES ?.2
RESULTAT XXXXX*
AUTRE MISE EN FORME (O/N)? 0
NB DE CARACTERES ? 7
NB DE DECIMALES ? 2
RESULTAT
AUTRE MISE EN FORME CO/N)?7 N
212399
198
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
TABULATION AVEC CADRAGE A DROITE
Nous allons illustrer la mise en forme de nombres en regroupant dans
une même table un nombre, son carré, sa racine carrée et le sinus de ce nom-
bre (représentant un angle exprimé en radians). La première partie de ce pro-
gramme (lignes 10 à 150) gère les calculs, la tabulation et fait appel à deux
sous-programmes (lignes 9000 à 9240) pour la mise en forme de chaque nom-
bre à afficher. Ce principe s’applique à n’importe quelle tabulation.
Il faut résoudre aussi le défaut signalé : 1.298 arrondi à 2 décimales
devient 1.2: puisqu’on ajoute 1 au code du 9, on obtient le code des deux
points ! Une solution consiste à repasser provisoirement à la valeur numéri-
que pour faire cet arrondi avant de finir la mise en forme, comme on l’a
déjà fait.
CLS :PRINT :PRINT'TABULATION AVEC CADRA
A DROITE" REMARQUES
PRINT" * X72 SGRCX) SINCX)" 40 — utilisation du sous-programme d'initialisation
PRINT 50 à 140 boucl ttant de fai ier |
— boucle permettant de faire varier le
GOSUB 9600 nombre contenu din x
é 60 — préparation des données nécessaires au sous-
FOR X=1 TO 9 progrmme de mise en forme, et utilisation de celui-ci
N=X :NC=4 :ND=1 :GOSUB 93050 RENE
PRINT N$; 70 — affichage du résultat de cette mise en forme
N=X72 :NC=5 :ND=2 :GOSUB 93050 80 — même travail qu’à la ligne 60, pour le carré
PRINT" "35N$ ; ob
N=SQRCX)J:NC=6 :ND=49 :GOSUB 3250 90 — affichage du carré de X, mis en forme
PRINT" "3Ns;
N=SINCX) :NC=6 :ND=4 :GOSUB 9258
PRINT" "3NS
NEXT X
100, 110 — idem pour la racine carrée de X
120, 130 — idem pour le sinus de X
150 — fin
9000 à 9030 — sous-programme d'’initialisation
9000 — chaîne servant de réservoir de blancs
ES=UXXXXAXXXEXX (9 espaces)
2$="b000000000"
RETURN
9010 — réservoir d'étoiles
9020 — réservoir de zéros
9050 à 9240 — sous-programme de mise en forme
de N>NS$
N$S=STRS$S(N)I:L=LENCNS) 9050 — la valeur numérique N est convertie en
chaîne de caractères sous le nom N$,L: nombre de
IF N>=Q THEN L=L-1:N$=RIGHTS(NS,L) caractères
: 9060 — nombre positif : on rejette le caractère de
FOR C=]1 TO L gauche
IF MID$CN$,C,1)3=".," THEN R=C:GOTO 9 9080 à 9100 — boucle de recherche du point
NEXT C
N$S=N$+", "
9090 — R représente la place du point, s’il existe,
comptée à partir de la gauche
9110 — le point n'existe pas : on l’ajoute à droite
9120 — il y a donc un caractère de plus et R mar-
que le dernier
POUR RÉVISER CINQ PROGRAMMES UTILES OU DIVERTISSANTS 199
REMARQUES
IF ND=G THEN NS$S=LEFTSCN$,R-1) :GOTO
3190 9140 — on ne souhaite pas de décimales : il ne faut
3150 N$=N$+2$
conserver que ce qui est à gauche du point
“eu 9150 — haite des décimales : jout f
9160 IF MID$SCNS » REND+19<"S THEN GOTO 92 zéros About de RoMbIe Do ar sHiéfalte (ous LS
10 besoins légaux (< = neuf décimales)
3178 N=UALCN$) 9170 à 9200 — arrondissement de la dernière déci-
93180 NP=ABS(N)+12"(-ND) male à conserver, en tenant te la suivante :
i celle-ci éri égale à 5, j 1
9190 N$=STRSCSGNCNDXNP ) D dant dl ce
9200 IF N>0 THEN N$=MIDSCNS »2) 9210 — troncature : on ne conserve que ND
9210 N$=LEFTSCNS, R+ND) décimales
93220 L=LENCNS) 9230 — si le nombre de caractères nécessaires pour
= : fficher 1 l t éri b É
323 IF LONC THEN NS-LEFTSCES,NC) ELSE N D ee
PS=LEFTS(BS,NC-L)+N$ gauche par des espaces, si nécessaire, afin de for-
mer une chaîne de NC caractères
3240 RETURN
La table obtenue est agréable à lire, et vous pouvez la remodeler en chan-
geant les valeurs de NC et ND :
TABULATION AVEC CADRAGE À DROITE
* #72 SGRCX) SINCX)
1.00
4,00
3,00
16.00
25.00
36.00
43,00
64,00
81.00
. 0000 .8415
.4142 . 380933
. 2321 .1411
. 0800 . 2568
. 2361 . 3383
. 44935 . 2234
6458 , 65/0
. 8284 . 38934
. 0080 .4121
1.0
2.0
3, Q
4.0
5,0
6.0
2,0
8.0
3.0
ONNNNNE
200
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
33
CLASSEMENT ALPHABÉTIQUE
La mise en mémoire d’un mot se faisant selon une codification norma-
lisée (baptisée ASCII), la lettre A a une valeur inférieure à la lettre B, et ainsi
de suite. Ceci conduit à un classement des codes correspondant à celui des
lettres. De plus, la comparaison de deux chaînes de caractères, par exemple
deux mots, est réalisée en Basic caractère par caractère : si le caractère de
gauche est le même dans les deux chaînes, la comparaison porte sur le sui-
vant, et ainsi de suite jusqu’à ce qu’une différence soit rencontrée. Si les deux
chaînes n’ont pas la même longueur, la plus courte est inférieure à la plus
longue.
Grâce à tout ceci, le classement de deux mots, ou groupes de mots (l’es-
pace compte alors), est possible au sens alphabétique : le classement se fera
dans l’ordre croissant : ’’ ABC” est inférieur à *’ ABC’, et ABC” est infé-
rieur à ’ABCD”’. Lorsqu'il y a plus de deux mots à classer, une méthode
simple à appliquer consiste à chercher d’abord le mot qui doit venir en tête
dans l’ordre alphabétique : c’est le plus petit lorsqu’on le compare aux autres.
On l’échange alors dans le fichier de mots avec celui qui se trouvait en tête,
et on recommence sans tenir compte du premier mot, qui est maintenant bien
classé. Il suffit de s’arrêter lorsque les deux derniers mots viennent d’être
échangés (si nécessaire).
18 CLS:PRINT'CLASSEMENT D'UN FICHIER D
E MOTS"
20
30
40
50
6Q
70
80
30
INPUT'NOMBRE DE MOTS ‘" ;NM
DIN MS$CNM)
FOR N=1 TO NN
INPUT "MOT" 3 M$ CN)
NEXT N
CLS :PRINT"'FICHIER CLASSE" :PRINT
FOR T=1 TO NM-1
N$=MS$CT):P=T
FOR N=T+1 TO NM
REMARQUES
20 — introduction du nombre de mots
30 — réservation de mémoire pour le fichier de mots
40 à 60 — boucle d'introduction des mots
80 à 160 — boucle permettant de trouver successi-
vement les mots dans l’ordre croissant
90 — hypothèse : le Tème mot est plus petit que
les suivants, P indique la position du plus petit mot
100 à 120 — boucle de recherche du plus petit mot
compris entre le Tème et le dernier
IF MSCNJ<N$ THEN N$=MS$CN) :P=N
NEXT N
M$CPI=MSCT)
M$SCT)=NS
PRINT N$
NEXT T
PRINT MS$CNM)
110 — si un mot plus petit est trouvé, on le loge
dans N$ et on change le contenu de P
130, 140 — échange
150 — affichage du mot bien classé
170 — affichage du dernier mot
POUR RÉVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 201
Exemple :
CLASSEMENT D'UN FICHIER DE MOTS
NOMBRE DE MOTS ? 10
MOT? POIRE
MOT? POMME
MOT? PAMPLEMOUSSE
MOT? PECHE
MOT? PRUNE
MOT? ABRICOT
MOT? FRAISE
MOT? ORANGE
MOT? KAKI
MOT? FRAMBOISE
FICHIER CLASSÉ
Si vous préférez les
fromages, ne vous
gènez pas !
ABRICOT
FRAISE
FRAMBOISE
KAKI
ORANGE
PAMPLEMOUSSE
PECHE
POIRE
POMME
PRUNE
CLASSEMENT ALPHABÉTIQUE AVEC NOMBRES ASSOCIÉS
Il est fréquent qu’on associe une ou plusieurs informations à chaque
mot d’une liste. Lorsqu’on souhaite classer ces mots par ordre alphabéti-
que, il ne faut pas séparer les informations qui s’y rattachent, et pourtant
celles-ci ne doivent pas être prises en compte pour le classement. La méthode
employée ici consiste à utiliser un fichier pour les mots et un fichier pour
chaque information associée. Tout échange nécessaire dans le fichier de mots
donnera lieu à un échange identique dans chaque fichier associé. Nous pren-
drons le cas d’une seule information associée.
202
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
10
RS"
28
30
40
55
68
78
CLS :PRINT'CLASSEMENT DE DEUX FICHIE
INPUT'NOMBRE DE MOTS ‘“ ;NM
DIM M$CNM),NBCNN)
FOR N=1 TO NM
INPUT"MOT" ;M$CN)
INPUT'"NOMBRE " 3NBCN)
NEXT N
Ci S:PRINT"'RESULTAT DU CLASSEMENT" :P
RINT
80 FOR T=1 TO NM-1
930 N$=M$CT):P=T
100
110
120
138
140
145
150
160
178
CLASSEMENT DE DEUX FICHIERS
NOMBRE DE MOTS ? 10
MOT? END
NOMBRE? 128
MOT? EDIT
NOMBRE? 123
MOT? INUERSE
NOMBRE”? 130
MOT? NORMAL
NOMBRE? 131
MOT? TRON
NOMBRE? 132
fonctions du langage
FOR N=T+1 TO NM
IF MS$SCNI<N$ THEN N$=MS$CN) :P=N
NEXT N
M$SCPI=M$SCT)
MSCTJI=NS$
NA=NBCT) :NBCT)J=NB(P) :NBCP)=NA
PRINT NBCT),MS$CT)
NEXT T
PRINT NBCNM),M$CNN)
Exemple :
REMARQUES *
20 — introduction du nombre de chaînes de
caractères
30 — réservation de mémoire pour le fichier des
mots et des valeurs numériques
40 à 60 — boucle d'introduction des informations
80 à 160 — boucle permettant de trouver successi-
vement les mots dans l’ordre croissant
90 — hypothèse : le Tème mot est plus petit que
les suivants, P indique la position du plus petit mot
100 à 120 — boucle de recherche du plus petit mot
compris entre le Tème et le dernier
110 — si un mot plus petit est trouvé, on le loge
dans N$ et on change le contenu de P
130, 140 — échange de mots
145 — échange correspondant pour les valeurs
numériques
150 — affichage du mot et du nombre classés
170 — affichage pour le dernier mot
Chaque mot du langage possède un code compris entre 128 et 255. On
en trouve parfois la liste classée dans l’ordre croisant des codes, mais il serait
souvent plus intéressant de l’avoir par ordre alphabétique :
123 EDIT
128 END
130 INUERSE
132 LORES
131 NORMAL
135 PLOT
Ce n'est qu'un extrait 134 POP
de Ja liste des mots et 136 PULL
133 TROFF
132 TRON
RESULTAT DU CLASSEMENT
POUR RÉVISER CINQ PROGRAMMES UTILES OU DIVERTISSANTS 203
34
COURSE DE HAIES
Pour entretenir les réflexes, rien de tel qu’une course de haies dans un
fauteuil : en appuyant sur une touche du clavier au bon moment, le coureur
sautera par dessus la haie. Mais si vous appuyez trop tôt ou trop tard, il
renversera la haie. Le parcours comporte 12 haïes réparties sur quatre lignes
droites.
Ces haies seront représentées par la lettre I en position debout, et par
le signe — lorsqu’elles ont été renversées. On définira deux nouveaux motifs
pour simuler un coureur qui saute de temps en temps par dessous une haie,
et qui court le reste du temps. Ces deux motifs prendront la place des cro-
chets [ et ].
La frappe d’une touche suffit pour faire sauter le coureur, à condition
de s’y prendre au bon moment, juste avant la haie. Si on tape trop tôt la
tentative de saut est un échec, et le coureur n’aura pas le temps de récupérer
avant la haie : il va la renverser !
CLS :PAPER G:INK 7
REPEAT
INPUT"'UITESSE C1 À 28)";U
REMARQUES
UNTIL U>Q AND UK«I1 L
CLS :LORES 0 ae Een de la vitesse du coureur avec
D=11-U |
NH=0 :N=0 :T=Q 60 — D : délai réglant la vitesse
H$="I 70 — NH : nombre de haies, N : nombre de fou-
. lées depuis la dernière haie, T : indicateur de
. tentative
PLOT 1,11,"@ HAIE RENUERSEE"
PLOT 23,11,'"UITESSE"+STRS$S(U)
GOSUB 370
PLOTO,2, "DEPART"
PLOT24, 10, "ARRIVEE"
FOR L=3 TO S STEP 2
PLOT 12-L,L,H$+H$+H$
NEXT L
WAIT 200
90, 100 — tableau d’affichage
110 — utilisation du sous-programme de définition
des deux motifs ”’coureur’?
120 à 160 — dessin du parcours
204
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
130 FOR L=3 TO S STEP 2
208 FOR C=-@ TO 31 STEP 2
218 PLOT C,L,"]"
228 WAIT D
239 PLOT C,L," "
240 K=@:N=N+2
250 T$=KEYS
260 IF T=Q@ AND N=18 AND T$@'"" THEN L=
L-1:k=]
270 IF CN<1Q@) AND CT$<>"") THEN T=1
280 WAIT D
298 PLOT C+1,L,"C"
300 IF N=19 THEN GOSUB 469
310 IF CK=@) AND (N<>@) THEN WAIT D:PL
OT C+],L," "
320 IF K=]1 THEN WAIT D'PLOT C+l,L," "“:
L=L+]1
330 NEXT C
34Q@ NEXT L
35@ END
DATA 8,28,8,29,42,24,20,34
DATA 8,28,8,29,42,40,20,2
FOR CO=91 TO 93 STEP 2
FOR I=Q@ TO ?
READ A
POKE 46080+COx8+I,A
NEXT I
NEXT CO
RE TURN
IF K=1 THEN RETURN
PING
NH=NH+ 1
FLOT: CET Ls "="
PLOT G@,11,STRSCNH)
IF NH=2 THEN PLOT 8,11,"S RENUERSE
RE TURN
REMARQUES
180 — le signal du départ
190 à 340 — boucle de parcours des 4 lignes droi-
tes (positions sur l'écran : 3, 5, 7, 9)
200 à 330 — boucle de parcours d’une ligne droite
210 — le coureur est dans une position
220, 230 — pause réglant la vitesse : effacement du
coureur
240 — K indique que le coureur vient de sauter :
0= non, 1=oui
250 — frappe de touche ?
260 — le coureur atteint une haie et on n’a pas
appuyé sur une touche trop tôt : si on appuie main-
tenant, le saut va avoir lieu
270 — on désarme T que l’on réamorce aussitôt en
cas de frappe de touche avant d’avoir atteint une
haie
280 — pause
290 — autre position
300, 310 — si le coureur ne vient pas de sauter et
ne se trouve pas sur une haie, on l’efface
320 — si le courant vient de sauter, il faut l’effa-
cer et le faire redescendre !
370 à 450 — sous-programme de définition des 2
motifs ’’coureur’”
370, 380 — description des motifs
390 à 440 — boucles de lecture de cette description,
touches [ et ]
460 à 530 — sous-programme de renversement
d’une haie
460 — remise à zéro du nombre de foulées depuis
la dernière haie et de l’indicateur de tentative
470 — si le coureur passe au-dessus, on ne touche
pas la haie
480 — la cloche
490 — on ajoute 1 au nombre de haies renversées
500 — renversement
510 — affichage du score
520 — à partir de la deuxième haie renversée, il faut
le pluriel
Faites un essai avec la vitesse 1 pour commencer. Ce n’est pas si simple :
POUR RÉVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 205
DEPART
Avant le départ.
Q HAIE RENUERSEE
Le coureur s’élance.
DEPART
La première haie est franchie.
Q HAIE RENUERSEE
DEPART
Le coureur s’est déconcentré et
a renversé 4 haies ; il approche de la
sixième.
Q HAIE RENUERSEE
DEPART
4 HAIES RENUERSEES
I
ARRIUVEE
UITESSE]
I
ARRIVUEE
UITESSEN
I
ARRIUVEE
UITESSE]
I
ARRIUVEE
UITESSEI
206 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
DEPART
C’est l’arrivée : il n’y a pas eu
d’autres chutes.
ARRIUVEE
4 HAIES RENUERSEES UITESSE]
POUR RÉVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 207
35
L’'ARDOISE MAGIQUE
L’Oric a un graphisme suffisamment fin pour inciter à l’utiliser comme
ardoise. Au déplacement classique dans les quatre sens, nous ajouterons le
tracé de segment et la possibilité de lever le ’’crayon”’.
HIRES
A=1:Xx=120:Y-100
PRINT'"ARDOISE MAGIQUE"
REPEAT
REPEAT
CURSET X,Y,2:WAIT 1:CURSET X,7Y,2
T$=KEYS |
UNTIL. T$ <>"
C=ASCCT$)
IF T$="E" THEN A=Q
IF T$="A" THEN A=1
X=X+(C=8)-(CC-8)
Y=Y-(C=12)+(C=11)
IF x<8 THEN x=0
IF X2233 THEN X=233
IF Y<Q THEN Y=0
IF Y>199 THEN Y=193
CURSET %X,Y,A
UNTIL C=3
On peut aussi
remplacer ces 2 lignes
par 90 GET T$
Mode d’emploi :
REMARQUES
20 — crayon baissé, position horizontale et verti-
cale du crayon
50 à 220 — répétition jusqu’à ce qu’on tape
CTRL-C
70 à 100 — attente d’une frappe de touche
80 — la pointe du crayon clignote
90 — T$ contient la dernière frappe de touche
100 — pas de touche frappée : on en attend une
120 — CS : code de la touche frappée
130 — on efface
140 — on trace
150, 160 — selon la touche enfoncée, on prépare
le déplacement du crayon en
170 à 200 — rejet des positions horizontales et ver-
ticales situées hors de l’écran
210 — marquage ou effaçage du point
220 — à suivre !
Après avoir tapé RUN, un point blanc apparaît au centre de l’écran ;
le crayon est prêt à tracer si l’on appuie sur l’une des flèches.
Pour lever le crayon, taper E, et pour l’abaisser, taper A.
Le programme n’a pas de fin naturelle ; il suffit de taper CTRL C pour
en avoir raison. Si vous êtes satisfait de votre œuvre, n’oubliez pas que vous
pouvez la conserver sur cassette et lui donner un nom grâce à :
CSAVE IMAGE”, A40960, E49120 pour enregistrer à vitesse élevée,
ou CSAVE IMAGE”, A40960, E49120, S pour la petite vitesse.
208
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
10 HIRES:INK 7
Comment améliorer cette ardoise
Avec la version que nous venons de donner, il est difficile de tracer des
obliques, et lorsqu’on se déplace sans tracer, c’est toute une gymnastique
de ne pas effacer ce qui existe déjà.
Nous allons offrir quatre possibilités supplémentaires :
— garder les points allumés
— se déplacer rapidement
— mettre en mémoire la position d’un point
— relier ce point au point actuel.
Vous pouvez même changer de couleur en cours de route. Devant tou-
tes ces possibilités, vous saurez où vous en êtes grâce à un tableau de bord.
20 A=I:U=I:X=120:Y-100:XM-120:YM=100
30 PRINT"ARDOISE MAGIQUE" :PRINT"'POINTS À
48 :
5Q REPEAT
68 :
20 REPEAT
LLUMES, UITESSE LENTE" REMARQUES
20, 30 — au départ !
50 à 420 — répétition de tout ce qui suit jusqu’à
ce qu’on frappe CTRL C
70 à 100 — attente d’une frappe de touche et cli-
80 CURSET X,Y,2:UAIT 1:CURSET X,YT,2 nat n Din
3G T$=KEYS$
100 UNTIL T$o""
119
128 C=ASCCTS$)
130
120 — C : le code de la touche
140 à 200 — étude du choix
140, 150 — points éteints ou allumés
160 — garder les points existants, mais ne pas en
140 IF T$="E" THEN A=0 allumer d’autres
150 IF T$=-"A" THEN A=1 170 — mise en mémoire de la position actuelle
160.16 T$= "6" THEN has 180, 190 — vitesse rapide ou lente
170 T$="M" THEN XM=X : YM=Y
T$='"'R"
POUR RÉVISER CINQ PROGRAMMES UTILES OÙ DIVERTISSANTS 209
IF T$="L" THEN U=1
20@ IF T$="T" THEN DRAN XM-X, YM-Y, A
210 :
220 IF C>=48 AND C<=55 THEN INK C-48
230 : REMARQUES
RAGE CCE BTE 292 200 — relier le point actuel au point mémorisé (pour
25Q Y=Y-UX((C=1D)-(C=<11)) allumer ou effacer un trait)
260 IF X<12 THEN X=12 220 — choix de la couleur
278 IF X>239 THEN X=239
280 IF Y<@ THEN Y=0
290 IF Y>199 THEN Y=199
300 : 310 — nouveau positionnement
240, 250 — positions horizontale et verticale
260 à 290 — butées gauche, droite, haute et basse
310 CURSET X,T,A 330 à 400 — tableau de bord mis à jour, sur deux
32@ : lignes en bas de l’écran
338 CLS
34@ PRINT'POINTS UITESSE MEMOIRE POSI
TION"
350 IF THEN PRINT'ETEINTS ‘";
360 IF A: THEN PRINT'ALLUMES ";
370 IF À: THEN PRINT'GARDES ‘;
380 IF THEN PRINT'LENTE ";
330 IF THEN PRINT'RAPIDE ‘";
420 PRINT SPCC3) ;XM; YM;SPCC3) ;X3Y
419
42Q UNTIL C=3
Mode d’emploi :
Pour se déplacer, c’est toujours les quatre flèches, mais si vous avez
choisi la vitesse rapide, le point sautera cinq fois plus vite qu’avant. Pour
tracer un trait dans n’importe quelle direction placez-vous à une des extré-
mités, mémorisez votre position en tapant M, déplacez-vous vers l’autre extré-
mité puis demandez le tracé en tapant T. Si c’est une oblique que vous vou-
lez, déplacez-vous sans rien tracer en tapant G avant de partir, mais il fau-
dra penser à rallumer (A) avant de tracer.
Pour effacer un point tapez E et pour effacer un trait tapez également
E avant T.
Si vous voulez changer de couleur, il suffit de taper un des chiffres 0,
1,... 7 selon le code convenu pour l’Oric.
Les positions 0 à 11 posent des problèmes quand on fixe la couleur.
Nous ne les utiliserons pas.
210 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
ARDOISE MAGIQUE
Au départ : POINTS ALLUMES, UITESSE LENTE
Le point 120, 100
vient d'être
mémorisé
POINTS UITESSE MEMOIRE POSITION
ALLUMES LENTE 12Q 100 121 120
Tapez R
pour accélérer
POINTS -VFTESSE
ALLUMES RAPIDE
MEMOIRE POSITION
166 190 166 100
Tapez E
pour éteindre
POINTS UITESSE MEMOIRE POSITION
ETEINTS RAPIDE 166 100 166 75
POINTS UITESSE MEMOIRE POSITION
GARDES LENTE 12@ 100 138 75
Quelques possibilités de tableau de bord
.. et G
pour garder
POUR RÉVISER CINQ PROGRAMMES UTILES OU DIVERTISSANTS 211
ORGUE À MÉMOIRE
Il est facile de produire un son en utilisant l’instruction MUSIC : on
obtient chaque fois un son pur avec une graduation par demi-ton. Il est alors
tentant de transformer le clavier en pupitre d’orgue, en toute modestie !
Nous allons le faire sur deux octaves, à un ton près :
Q WE R T Y
chehenar certe pre
mi fa fa # sol lab la si si do do #
A S D F G H J K L
CM EP OL EME ONE Es
sol lab la siP si do do # ré mib
Z X C V B N M
ESRRPESRRRSERRE
do do # ré mib mi fa fa #
espace
|
silence
Au fur et à mesure que vous pianoterez, les notes apparaîtront sur l’écran
à leur hauteur respective, la plus basse (touche Z) en bas de l’écran.
1Q@ CLS :PRINT'UN CLAUIER MUSICAL" REMARQUES
22 INPUT"UOLUMET ;U 20, 30 — introduction du volume et de l’octave
3Q INPUT'"OCTAUE BASSE" ;0B basse
40 DATA 2,X,C,;,U,B,N,MA,S,D,F,G;H,J,K; 40 — les lettres selon leur place sur le clavier de
WE, R;T, YU, 1,0:P bas en haut et de gauche à droite
50 DIM N0O(9a),0C(C90@) 50 — réservation pour les fichiers des notes et des
6A N-1:0-0B ur
?7Q FOR L=1 TO 26 60 — note et octave basses
8Q READ C$:C=ASCCCS) 70 à 120 — boucle de correspondance entre les
9Q NO(C)J=N:O0C(C)=0 codes des lettres et les sons
108 N=N+I 80 — C : code d’une touche, selon la disposition
fournie par l’instruction DATA
119 IF N=13 THEN O=0+]:N=1
90 — mémorisation de la note et de l’octave
128 NEXT L correspondante
125
110 — passage à l’octave supérieure
212 PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
REMARQUES
F=iji:CLS 140 à 190 — répéter ce qui suit jusqu’à ce qu’on
REPEAT frappe CTRL C
GET T$ 150 — attente d’une frappe de touche
IF F=39 THEN F=1:CLS 160 — changement de ’’page écran””
IF T$>="A" AND T$<="2" THEN GOSUB 170 — si on a frappé une lettre : musique
F=F+1
UNTIL T$-CHR$(3)
END
310 à 350 — sous-programme de production d’un
son
T=ASCCTS$)
MUSIC 1,0CCT),NOCT),U
H=27-(COC(T)-0B)X12-NOCT)
PLOT F, H,"9" 330 — hauteur de ce son, sur l’écran (en bas : grave,
en haut : aigu)
RE TURN
310 — code de la touche
320 — le son
340 — affichage d’un point d’exclamation au bon
endroit sur l’écran
Choisissez le volume et l’octave basse :
UN CLAUIER MUSICAL
VOLUME? 4
OCTAUE BASSE? 3
et composez ou reproduisez un air connu !
VERSION AVEC MEMOIRE
Pour accroître l’intérêt du jeu tout en gardant un programme simple,
nous allons mémoriser les hauteurs de chaque note, de façon à ré-écouter
un air que l’on aura composé au clavier. On pourra fixer la durée.
18 CLS:PRINT"'CLAUIER MUSICAL À MEMOIRE
20 INPUT'"UOLUME" ;U
30
40
L,Q
5@
55
60
?@
80
30
100
11
120
125
130
135
140
150
160
170
175
180
HEN
190
200
210
220
230
240
245
250
HEN
255
260
270
275
280
230
300
310
328
330
340
350
POUR RÉVISER CINQ PROGRAMMES UTILES OU DIVERTISSANTS 213
INPUT'"OCTAUE BASSE" ;0B
DATA 2,X,C,U,B,N,MA,S;D;F,G;H,J,K;
WE, R:T,Y,U,1,0,P
DIM NOCS3G),0C(C30)
DIM T$CS5,33)
N=1 :0=0B
FOR L=1 TO 26
READ C$:C=ASCCCS$)
NOCCJ=N:OCCC)=0
N=N+1
IF N=13 THEN 0=0+1:N=]
NEXT L
M=1 :F<Q:CLS
PLAY 1,0,0,0
REPEAT
GET TT$
IF TT$="Q" THEN GET TT$:PLOT F,H,"
ELSE F=F+1
IF F=39 THEN M=M+Il:F=1:CLS
T$CM,FI=TTS
IF T$CM,F)>="A" AND T$CM,FJI<="2" T
GOSUB 300
UNTIL TT$=CHR$(3)
MM=M:FF=F
M=1 :F=1 :CLS
REPEAT
IF F=39 THEN M=M+1:F=1:CLS
IF T$CM,F)=" " THEN MUSIC 1,@,1,0
IF T$CM,F)>="A" AND T$CM,FJ<="2" T
GOSUB 38
WAIT 28
F=F+1
UNTIL M=MM AND F=FF
PLAY 8,0,0,0
END
T=ASCCT$CM,F))
MUSIC 1,0CCT),NOCT),U
H=27-COCCT)-0BJX12-NOCT)
PLGT FH
RETURN
REMARQUE
55 — réservation pour les frappes de touches à
enregistrer
REMARQUES
130 — premier morceau
135 — silence
150 — attente d’une frappe de touche
160 — effacement d’une erreur si on raye zéro,
sinon passage au prochain son
170 — passage au morceau suivant
175 — mémorisation de la touche
180 — production du son si c’est une lettre qui a
été frappée
210 à 270 — écoute de l’air enregistré
210 — MM : le nombre de morceaux, FF : le nom-
bre de notes du dernier morceau
220 — premier morceau
230 à 270 — répéter ce qui suit jusqu’au dernier
son enregistré
240 — passage au morceau suivant
245 — un silence
250 — un son
255 — durée de ce son ou de ce silence : 2/10 de
seconde
280 — arrêt de la dernière note
Après le choix du volume et de l’octave basse.
214
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
CLAVIER MUSICAL À MEMOIRE
VOLUME? 1
OCTAUE BASSE? 2
Vous pouvez pianoter, avec droit à l’erreur (en tapant zéro vous gom-
mez la fausse note). Mais il n’y a pas de sécurité sur la longueur de l’air enre-
gistré : ne dépassez pas 5 morceaux.
La première écoute est gratuite, pour les suivantes il faudra faire GOTO
220.
Et si vous le souhaitez vous pouvez même changer le volume et décaler
l'air entier vers les graves ou les aigüs d’une ou plusieurs octaves, sans reta-
per les notes :
V=8
OB=S
GOTO 220
Les programmes que nous vous avons donnés avaient comme but de
vous mettre en route. Vous devez pouvoir maintenant écrire les vôtres et tirer
profit de ceux que vous trouverez dans le commerce en les comprenant et
en les modifiant.
ABS
AND
ASC
ATN
CALL
CHAR
CHRS
CIRCLE
CLEAR
CLS
CLOAD
CONT
cos
CURMOV
CURSET
CSAVE
DATA
DEEK
DEF FN
DEF USR
DIM
DOKE
DRAW
EDIT
ELSE
END
EXP
LE BASIC DE L’ORIC :
LES MOTS RESERVES
Voici la liste des instructions Basic utilisées par l’Oric. Nous avons marqué en gras
celles qui ont été étudiées dans ce livre, car on ne les a pas toutes passées en revue.
En effet, on a abandonné certaines fonctions mathématiques, ainsi que des instruc-
tions spécifiques au langage « machine ». Pour tout cela, vous pourrez maintenant
vous reporter au manuel d'emploi de l’Oric qui est à la fois presque complet (lui
aussi !) mais malheureusement généralement hermétique. Mais vous savez mainte-
nant utiliser l’essentiel des commandes, et vous ne serez plus guère désorienté.
Si vous voulez retrouver la page à laquelle chaque instruction étudiée est dévelop-
pée, reportez-vous à la liste des « Mots clés » qui la précise.
Toutes ces commandes Basic sont des « mots réservés ». Vous n'avez pas le droit
de les employer comme noms de variables, ni même les inclure dans des noms de
variables.
EXPLODE LOG RESTORE
FALSE LORES RETURN
LPRINT RIGHTS
FILL
FN MIDS$ RND
FOR... TO MUSIC RUN
NEW SCRN
FOR... TO... STEP
FRE NEXT SGN
GET NOT SHOOT
ON... GOSUB SIN
GOSUB
GOTO ON... GOTO SOUND
GRAB OR SPC
PAPER SQR
HEXS$
HIMEM PATTERN STEP
HIRES PEEK STOP
PI STRS$
IF... THEN
IF... THEN... ELSE PING TAB
INK PLAY TAN
PLOT TEXT
INPUT
INT POINT TROFF
KEY$ POKE TRON
POP TRUE
LEFTS$
LEN PRINT UNTIL
LET PULL USR
READ VAL
LIST
LLIST RELEASE WAIT
LN REM ZAP
REPEAT
216
PRATIQUE DE L'ORIC 1 ET 36 PROGRAMMES
LE CODE ASCII
ASCII signifie « American Code for Information Interchange », soit code améri-
cain pour l’échange d’informations. Chaque frappe, simple ou combinée, trouve sa
traduction dans ce code. Voici ce code, dans sa normalisation officielle, c’est-à-dire
sans les caractères graphiques personnels à l’Oric.
CODIFICATION A,S C.I.Iï.
Espace 64 96
65 9?
66 38
6? 99
68
69
78
73
?2
23
24
25
76
22
278
23
80
81
82
83
84
85
86
87
88
89
90
91
92
33
94
95
TO +MDmANTY à»
ZAC I OO 1 M OU NO W D ©
— X €.
Æ
/
Q
1
2
3
4
S
6
?
8
3
DU /nmM<XE EE CE 10 WOOD VO
è —--2NNX £E CC HW 7 NA VU O©O 7 3
LES CARACTÈRES GRAPHIQUES DE L’ORIC
Lorsqu'on choisit le jeu de caractères numéro 1, certains codes (32 à 95) fournissent
des caractères utiles pour créer des images graphiques basse résolution. Voici ces 64
caractères, agrandis afin de situer les zones d’encre par rapport au fond.
5
È
©
3
T
3
TZ
à
S
Un 0 représente
un point éteint
Sd
& L
ERS
SES
ER
à © Ÿ
D + LL
SL 3
rs)
AE
SSS
MOTS CLÉS
En marge du texte, nous avons encadré des « mots clés » importants. La liste vous
en a été fournie, chapitre par chapitre, au début de chacun d'eux. Les voici mainte-
nant par ordre alphabétique, avec renvoi à la ou les pages où ils sont définis.
A
Accord musical, 222
Adjonction d’une ligne, 46
Affectation, 40
Alimentation, 8
AND, 145
Annulation d’une ligne, 34
Attributs, 147
AZERTY, 10
B
Barres de couleur, 105
Basic, 12, 13
Bataille galactique, 85
Boucles, 73, 80, 82
Branchement de l’Oric— 1, 7
Branchement conditionnel, 145
Branchement inconditionnel, 54, 145
Byte, 14
C
Canaux des sons, 217
CAPS, 16
Caractère, 14, 39
Caractères double hauteur, 148
Caractères graphiques, 115
Carré en LORES 9, 110
Cellules mémoires, 14
Cercles à géométrie variable, 139
Chaînes de caractères, 39, 42
Chaîne vide, 42
CHAR, 140
Chargement d’un programme, 21
Chiffre 9 et lettre O, 13
CHRS, 56
CHRS(8), 117
CHRS$(9), 117
CIRCLE, 137
Clignotement, 148
CLOAD, 21
CLS, 54
Code ASCII, 56
Concaténation de chaînes, 43
Connexion d’un magnétophone, 19
Constante, 40
Constante chaîne, 40
Constante numérique, 40
CONT, 55, 116
Couleurs, 78
Couleurs avec PLOT, 103
CSAVE, 25
CSAVE AUTO, 51
CTRL, 16
CTRL/A, 58
CTRL/C, 53, 116
CTRL/D, 148
CTRL/F, 43
CTRL/G, 82
CTRL/H, 38
CTRL/I, 38
CTRL/J, 38
CTRL/K, 38
CTRL/L, 38
CTRL/M, 38
CTRL/N, 44
CTRL/Q, 111
CTRL/T, 16
CTRL/X, 34
CURMOV, 135
CURSET, 135
Curseur, 11
D
DATA, 121, 122
Décomptage avec FOR... TO., 78
DEEK , 151
Défilé des couleurs, 123
DEL, 11
Démarrage à chaud, 24
Démarrage à froid, 24
Démarrage automatique, 29
DIM, 127
Division, 36
DOKE, 151
Double hauteur, 207
Double-point, 76
DRAW, 137
Duplication d’instructions, 109
E
Ecran haute résolution, 135
Edit, 59
Effacement arrière, 11
Elévation à puissance, 37
Effacement de la mémoire, 49
Effacement de l’écran, 38
220
Effacement d’une ligne, 44
Effacement programmé de l’écran, 54
ELSE, 145
Emboîtage de boucles, 80
END, 112
Entiers, 132
Enveloppe des sons, 218
Error, 11
Etoiles, 111
EXPLODE, 83
F
FILL, 141
Format de l’écran, 16
FOR... TO, 73
G
GET, 226
GOSUB, 113
GOTO, 52
Graphique basse résolution, 105
Grille graphique basse résolution, 102
Guillemets, 31
H
Haute résolution, 133, 135
HIRES, 106, 133
I
IF... THEN, 144
IF... THEN... ELSE, 200
INK, 78
INPUT, 50
Instructions multiples, 76
INT, 132
K
KEY$, 146
L
Langages, 12
Lecture d’une touche, 146
LEFT$, 67
LEN, 67
Lignes de couleurs aléatoires, 142
Lignes doublées, 148
Ligne logique, 15
Ligne physique, 24
LIST, 47
Listage partiel, 57
LORES, 106
LORES 9, 106
LORES 1, 114
M
Majuscules, 16
Mémoires centrales, 13
Mémoires externes, 14
Mémoires internes, 13
Mémoires mortes, 14
Mémoires, 14, 49
Mémoires périphériques, 14
Mémoires vives, 14
Messages d’erreur, 49
Microprocesseur, 13
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Microsoft, 13
MIDS$, 68
Minuscules, 16
Mise en service, 9
Mode direct, 31, 35
Mode programmé, 47
Mode texte, 101
Modes graphiques, 101
Modification d’une ligne, 58
Mots réservés, 42
Mot transformé, 129
Mouvement, 116
Multiplication, 36
MUSIC, 213
N
NEXT, 73
NEW, 49
Nombres aléatoires, 83
Noms de variables, 71
NOT, 145
Notation scientifique, 94
Notes musicales, 214
Numérotation des lignes, 45
O
Octet, 14
Opérateurs relationnels, 145
OR, 145
Organigramme, 52
Organigramme de FOR... TO, 74
P
PAPER, 78
PATTERN, 139
Pas dans FOR... TO, 76
PEEK, 152
Période avec SOUND, 224
PING, 82
PLAY, 213, 217
PLOT, 102
POINT, 140
Points d’affichage, 135
Point décimal, 36
Point d'interrogation pour PRINT, 34
Point-virgule, 35
POKE, 152
Pour sauter une ligne, 95
PRINT, 32
Prise Péritel, 8
Programme de conversion, 50
Programme principal, 112
Q
QWERTY, 10
R
Racine carrée, 37
RAM, 21
READ, 14
REDO FROM START, 53
Règles avec les boucles, 82
Ré-initialisation, 23
REM, 79
Remarques, 78
Remplacement d’une ligne, 48
MOTS CLÉS
REPEAT UNTIL, 144
Répétition des touches, 12
RESET, 24
RETURN, 17, 32, 113, 130
RIGHTS, 67
RND, 83
RND(8), 86
RND(- N), 86
Rôle des guillemets, 35
ROM, 14
RUN, 46
RUN numéro de ligne, 111
S
Sauter une ligne, 55
Sauvegarde d’un programme, 25
SCRN, 129
SGN, 124
SHIFT, 12
SHOOT, 83
Sonorisation des touches, 43
Sons, 82
SOUND, 213, 224
Sous-programme, 112
SQR, 37
STEP, 76
STRS, 69
STOP, 112
221
Suppression d’une ligne, 48
Suppression du curseur, 111
Symbole d’affectation (=), 40
Symbole de concaténation, 43
Symbole dollar, 39
Syntaxe, 35
SYNTAX ERROR, 12
T
Temporisation, 59
TEXT, 101, 134, 135
Traits en LORES 9, 108
V
VAL, 69
Variable, 40
Variable chaîne, 40
Variable numérique, 40
Virgule dans un PRINT, 37
Virgule décimale, 36
Vitesse lente, 22
Volatilité des mémoires, 14
W
WAIT, 59
Z
ZAP, 83
Zéro et lettre O, 36
TABLE DES MATIÈRES
AVAnRtEPropOS 5. séries enr dei nasale seen des des e
Chapitre I — Pour faire connaissance avec l’Oric ...................
1. L’Oric — 1 et ses branchements ......................
2. Misé-en service :.35::..2 4 iuesttsess com lite
3. Qu'est-ce que le Basic ? ............................
4. Microprocesseurs et mémoires ......................
5; Clavier ét ÉCraN ft. sem ss o ss ta soahae sites eue
Chapitre II — Magnétophone et cassettes de programmes ............
l: Le magnétophône lues en date ennedes es
2. Chargement d’un programme .......................
3. Sauvegarde d’un programme .......................
4. Les règles du chargement ...........................
Chapitre III — L’ordinateur en « mode direct » ....................
1. L’instruction PRINT ..............................
2. Premiers calculs ..................................
3. Point-virgule et virgule ............................
4, Variables et constantes .............................
5. Chaînes de caractères ..............................
Chapitre IV — Le mode programmé ..............................
. Numérotation des lignes ...........................
Les COrreCHIons 2.52 ee ei nn te
. Effacement de la mémoire et de l’écran ...............
. Quelle est la vitesse du bateau ? .....................
. L'ordre d’entrée INPUT ...........................
. Et si l’on recommençait ? ..........................
. Effacement programmé de l’écran ...................
sLe-coder ASCIE Anne de termes
LÉO. reset ae de oem et
© 00 I Où Ua BR W ND
Programmes
1. Une addition qui n’en finit pas
(CLS, INPUT, PRINT, GOTO, WAIT) .......
2. Un chronomètre digital
(CLS, PRINT, WAIT, GOTO) ...............
3. Caractères et codes : la norme ASCII
(CLS, CHRS, ASC, PRINT, GOTO, WAIT)
. L’initiale d’un mot (LEFT$, LEN) ............
. Une tête à queue verbale (MIDS) ..............
. Un compte rond (STR$, VAL) ................
DU BR
61
65
68
69
TABLE DES MATIÈRES
Chapitre V — Couleurs et sons programmés ....................... 73
1. Boucles avec les ordres FOR... NEXT ................ 73
2. Boucles FOR... TO avec un pas ..................... 76
3. Avec 8 couleurs ................................... 78
4; Des SOnNS AUSSL 5 456 mors tannien eee ss 82
5. Nombres au hasard et bataille galactique ............. 83
Programmes
7. Compte à rebours (FOR, NEXT, PING) ...... 88
8. De zéro à 99 (FOR, NEXT) ................. 89
9. Le hasard cet inconnu (FOR, RND, INT) ...... 90
10. Pour réveiller, sons et couleurs !
(PING, ZAP, PAPER, IN) ................. 95
11. Notation scientifique 1.23456689E + 10 ....... 97
12. Conversion binaire - décimale
(FOR;'INT).. Sandi creme niict our ée 99
Chapitre VI — L’art graphique en basse résolution ................. 101
1. L'organisation de l’écran en « mode texte » ........... 101
2. Graphique basse résolution, mode 9 ................. 105
3::Ciel d'étoiles 555588 cours sometimes 109
4. SoUus-Programmes ................................. 112
5. Lemode LORES 1:::,: 24245 2 2autenns die 2 dsl sanécs 114
6. Pour mêler les genres .............................. 117
Programmes
13. Arc-en-ciel (LORES, PLOT, READ, DATA) 121
14. C’est plus C’est moins (PLOTS$, SGN) ........ 124
15. Une mosaïque vivante (PLOT, LORES) ....... 125
16. Histogramme (LORES, PLOT, DIM) ........ 127
17. Un mot transformé (PLOT, SCRN) .......... 129
18. Faire-part de naissance (PLOT, GO
SUB, RETURN) .......................... 130
224
PRATIQUE DE L’ORIC 1 ET 36 PROGRAMMES
Chapitre VII — Dessins en haute résolution ........................
. Placement du curseur ..............................
Tracés tre ane tente ed end
: RÉDÉTIHIONS 54 minor ne D berne
. Lecture d’une touche avec KEY$ ....................
s Les attributs 22 is norte ete nn cran ne tr er
Programmes
19. Chronomètre digital précis
(STRS, VAL): mine uma:
20. Caractères accentués .......................
21. Les caractères semi-graphiques à
la loupe (HIRES, CURSET, CHAR, DRAW)
22. Création de motifs (HIRES, CURSET, CHAR,
DRAW, DEF, EN) ........................
23. Courbe digitalisée (HIRES, CURSET,
DRAW): 2.2 RS En eee
24. Courbe paramétrée (HIRES, CURSET,
DRAW, PATTERN, DEF, FN) .............
25. Diagramme circulaire (HIRES, CURSET,
(CIRCLE, DRAW, CHAR) .................
26. FILL : du remplissage avec 64 motifs
ŒHIRES, CURSET, CURMOV, FILL, CHAR)
Chapitre VIII — Le moment musical .............................
Un & & D —
. Music, pour commencer ...........................
. Pour jouer : PLAY ...............................
.-Des'accords :.::% museum tement Pres das
L SONS:UIVETS en 2 nan ne dise ee nd Ste
. Attendez une touche ...............................
Programmes
27. SOUND : découvrez les sons
(SOUND; GET) 25 rein sente ts
28. MUSIC : musique (MUSIC, GET) ...........
29. SOUND MUSIC PLAY : pour
mélanger les sons (SOUND,
MUSIC PLAY)... uen doa à
30. En rythme: con ds mucecra ou
31. Musique au hasard (MUSIC) ................
Chapitre IX — Pour réviser cinq programmes utiles
ou divertissants ...................................
Programmes
32. Mise en forme : comment afficher
proprement un nombre .....................
33. Classement alphabétique ...................
34. Course de haie ............................
35. L’ardoise magique .........................
36. Orgue à mémoire ..........................
Le Basic de l’Oric et les mots réservés .............................
Le:code ASCIL.. 2: 22m uen etienne to cite
Les caractères graphiques de l’Oric ...............................
Mots-clés
133
133
137
141
143
146
147
151
154
157
159
163
167
173
175
177
177
179
181
182
183
185
186
187
191
192
195
195
200
203
207
211
215
216
217
219
RL LE LELEE INT TS SSI S ESS SSII SITE EEE PP PP PP PP PP PP PP PP PP PP PP PPT PERD
Pratique de l’Oric 1 et 36 programmes
S.E.C.F.
E2
EDITIONS RADIO
Service lecteurs
(à retourner à S.E.C.F.-Éditions Radio, 9, rue Jacob, 75006 Paris)
Pour nous permettre de vous proposer des ouvrages toujours meilleurs, nous souhaiterions
recevoir vos critiques, appréciations et suggestions sur le présent livre :
Quels sont les ouvrages (thème, sujet, niveau) que vous souhaiteriez voir publier par notre
société ?
Nous vous remercions de votre confiance et de votre coopération.
S.E.C.F.-Éditions Radio
Je désire recevoir gratuitement et sans engagement (mettre une croix dans la case) :
[1 Votre catalogue général (Electronique professionnelle et grand public,
Informatique, Hi-Fi, Vidéo)
[1 Votre catalogue spécial informatique.
Nom : 2 _________ Prénom:
Adresse :
Secteur d’activité et fonction :
CENTRES D’INTÉRÊTS
Cl Electronique professionnelle CO Micro-informatique professionnelle
[1 Electronique de loisirs [1 Micro-informatique de loisirs
[ Vidéo LÉ AUS La un Re Re
RCD _————————_——— Zn an io Dane nes
Voir au dos ’’Correspondance Auteurs’’
Pratique de l’Oric 1 et 36 programmes
cosssescecece
S.E.C.F.
E2
EDITIONS RADIO
Service lecteurs
Correspondance auteurs
(à retourner à S.E.C.F.-Éditions Radio, 9, rue Jacob, 75006 Paris)
Pour toute demande d’éclaircissements techniques relatifs à ce livre, formulez ci-dessous vos
questions, avec le maximum de précisions. Nous les transmettrons à l’auteur qui ne manquera pas
de vous répondre directement :
Nom : 2 Prénom:
Adresse :
000000000000 00000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000000000000000000
nsuel |
T la micro-informatique
et de ses utilisations
journaux
en vente chez tous les marchands de jou
RO 0
CRE PPORAATOTE
pue ! [VOTRE BUREAU DE DEMAIN
Vos
4 micro-ordinateurs au banc d'essai :
le portable d'Osborne
Supermlero
d'ADDX
2 programmos
«un flehior
avec votre TRS.80
Jestion de chantiers
DES BOUTIQUES DE CONFECTION
À LA MODE MICRO
3 bancs d'essai :
OLLLTPA Hewlett-Packard
« le Sanco 7500
le 8030 de Commodore
= l'F 800 de Oùi
+ le LX 538 de Logaban
10 programmes
« Gestion, tri et <lassement de dossiers
« Tenue des Hocks pour services achats
+ fichiers pour mailing et Promotion
« Comptabilité LT TPS
ROME DU BON NORMANDe
IN CHARCUTIER SE MycRe INFORMANnSE
TL Te LALITTI
‘Apple He
lAkyane de MEC/ Mu
€ Dot de CDI
QD ETT
Orie 1
BALLLUTTA
1tlon d'un
inat médhrot
D q
Editions Radio
9, RUE JACOB - 75006 PARIS
| TÉL. 329.63.70
PRATIQUE
l'ORIC1
36 PROGRAMMES
Micro-ordinateur familial par excellence, l’Oric-1 connaît un succès « explosif ».
Ce livre est destiné à vous en présenter l’usage et vise un double objectif :
e Vous expliquer la programmation dans ce langage qu’on appelle le Basic et ce,
à l’aide d’une infinité d'exemples pratiques.
+ Vous proposer toute une série de programmes d’applications qui vous serviront
à maîtriser parfaitement l’outil informatique.
Très progressif et écrit dans une langue simple, ce livre est aussi l’un des plus
didactiques qui soient. Il ne demande au lecteur aucune connaissance préalable
en informatique et est destiné à tous les publics.
SE GE.
Ill 1093 (ll
ISBN 2 7091 0932 8 en
Code : 37 ÉDITIONS RADIO [Prix : 100 F
GHVN38 T - NIUTH AE SE UTP BTE EE TRE E- -DJI4O.I °P CHOIRRET.